0
点赞
收藏
分享

微信扫一扫

建立数据科学基础设施的绝佳指南 数据工程师都该人手一册

概述:

原理:

搭建:

实践

1.首先准备俩台安装MySQL的纯净服务器 

俩台服务器都做如下操作:
同步时间,修改时区
#ntpdate time.windows.com
#timedatectl  set-timezero Asia/Shanghai

修改主机名
#hostnamectl set-hostname  zhuku
#hostnamectl set-hostname   congku

配置静态ip
# vim /etc/sysconfig/network-scripts/ifcfg-ens33 
将dhcp改为static
IPADDR=本机ip
GATEWAY=192.168.231.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
DNS2=8.8.8.8

清理环境在安装MySQL之前

俩台服务器都需要做的操作
[root@slave ~]#yum -y erase `rpm -qa |  grep -E "mysql|mariadb"`
[root@slave ~]# rm -rf /etc/my*  /var/lib/mysql* /var/log/mysql*
#检查一下,环境清理干净没有
[root@slave ~]# [[ ! -f /etc/my.cnf ]] && [[ ! -d /var/lib/mysql ]] && [[ ! -f /usr/bin/mysql ]] && echo "数据库已清除" || echo "数据库未清理"

安装mysql

启动服务:
# systemctl start mysqld
寻找密码
grep password  /var/log/mysqld.log 
也可以
mysqladmin -p"`awk '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log`" password 'Qianfeng@123'
这条命令是直接登录MySQL,顺便将密码修改以后 可以登录

也可以是,获取新的MySQL的密码
#  awk  '/temporary password/{p=$NF}END{print p}' /var/log/mysqld.log

2.配置主库:

创建日志目录并赋予权限

# mkdir /var/log/mysql
# chown  -R mysql.mysql /var/log/mysql

编辑主库服务器的配置文件 /etc/my.cnf

[mysqld]
log-bin=/var/log/mysql/mysql-bin       #启用二进制文件日志记录
server-id=1          # 服务id,保证整个集群环境唯一
read-only=0         #1是只读,0是读写

重启服务

# systemctl restart mysqld

在主库登录MySQL,创建用户

为了用户在从库中用来连接主库的账号


mysql>  grant replication slave on *.* to  '用户名'@'ip' identified by '密码';  
这是为用户分配主从复制的权限,并创建用户

刷新:
mysql> flush  privileges;

查看二进制日志坐标

mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      313 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

3.配置从库

编辑从库服务器的配置文件my.cnf

[mysqld]
server-id=2
read-only=1     #普通用户一般只有只读,可以不写

重启mysql服务

# systemctl restart mysqld

登录mysql

此处登录的是你从库mysql的root用户登录的账号与密码,不是在主库创建的用户

mysql>  change master to master_host='主库的ip',
        master_user='连接主库用户名',
        master_password='连接主库用户的密码',
        master_log_file='日志文件名',
        mastre_log_pos='日志位置';
  
日志位置就是在主库show master status查出来那个数字   ----313

+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      313 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+

当你第一次记不住这么多命令时,可以直接

mysql > ? change master to

出现下列,直接复制

CHANGE MASTER TO

  MASTER_HOST='source2.example.com',
  MASTER_USER='replication',
  MASTER_PASSWORD='password',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='source2-bin.001',
  MASTER_LOG_POS=4,
  MASTER_CONNECT_RETRY=10;
 然后: mysql > ?e
进入文本编辑器内,将复制的 内容进行修改 然后保存即可

启动:

mysql> start slave;

查看主从同步状态:

mysql> show slave status\G

*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.231.153   -----主库的ip
                  Master_User: itcast     -----用来连接主库的用户名   
                  Master_Port: 3306  ------端口
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001          -----二进制日志名字
          Read_Master_Log_Pos: 313
               Relay_Log_File: congku-relay-bin.000002   -----中继日志名字
                Relay_Log_Pos: 479
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes         --------主要看俩个IO线程是否成功启动
            Slave_SQL_Running: Yes         --------看SQL线程是否成功启动
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 

4.测试主从复制

主库!
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| db1                |
| mysql              |
| performance_schema |
| school             |
| sys                |
| xian               |
+--------------------+
8 rows in set (0.00 sec)


从库:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| xian               |
+--------------------+
5 rows in set (0.00 sec)
!!!!在主库创建库,创建表,写入数据
mysql> create database db2;
mysql> create table db2.zhucong(id int,name varchar(50),age int);

mysql> insert into zhucong(id,name,age) values(1,'aaa',18),
       values(2,'bbb',19) ,(3,'ccc',20);

mysql> select * from zhucong;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | aaa  |   18 |
|    2 | bbb  |   19 |
|    3 | ccc  |   20 |
+------+------+------+
3 rows in set (0.00 sec)

!!!在从库查看
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| db2                |
| mysql              |
| performance_schema |
| sys                |
| xian               |
+--------------------+

mysql> use db2;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+---------------+
| Tables_in_db2 |
+---------------+
| zhucong       |
+---------------+
1 row in set (0.00 sec)

mysql> select * from zhucong;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | aaa  |   18 |
|    2 | bbb  |   19 |
|    3 | ccc  |   20 |
+------+------+------+

修改主库中的表数据,查看从库是否有变化

主库:
mysql> update zhucong set age=21;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3  Changed: 3  Warnings: 0

mysql> select * from zhucong;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | aaa  |   21 |
|    2 | bbb  |   21 |
|    3 | ccc  |   21 |
+------+------+------+
3 rows in set (0.00 sec)


查看从库:
mysql> select * from zhucong;
+------+------+------+
| id   | name | age  |
+------+------+------+
|    1 | aaa  |   21 |
|    2 | bbb  |   21 |
|    3 | ccc  |   21 |
+------+------+------+
3 rows in set (0.00 sec)

附加:

获取本机的uuid

[root@slave ~]# uuidgen 
b392cd4c-9e3d-4596-9a72-0805c2162c8f

修改本机的uuid

#  vim /var/lib/mysql/auto.cnf

base64加密与解密

[root@slave mysql]# echo “马龙” | base64 
4oCc6ams6b6Z4oCdCg==
[root@slave mysql]# echo "4oCc6ams6b6Z4oCdCg==" | base64 -d
“马龙”
举报

相关推荐

0 条评论