一、准备工作

两台CentOS7服务器,安装好Mysql(CentOS 7安装MySQL)并设置静态IP,我这里两台服务器IP地址分别设置为192.168.0.150,192.168.0.151。150作为master,151作为slave。

在MySQL主上创建数据库users,在users下面创建表user,user表有两个字段id和name,并随意插入几条记录。

image.png

二、主从同步配置

1、编辑MySQL主上的/etc/my.cnf

vim /etc/my.cnf

添加以下内容

log-bin=151_mysql
server-id=1
  • log-bin :MySQL的bin-log的名字
  • server-id : MySQL实例中全局唯一,并且大于0。

image.png

2、编辑MySQL从上的/etc/my.cnf

server-id=2
  • server-id : MySQL实例中全局唯一,并且大于0。与主上的 server-id 区分开。

image.png

3、在MySQL主上创建用于备份账号

mysql> CREATE USER 'repl'@'%' IDENTIFIED` WITH mysql_native_password BY 'password'; 
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

image.png

4、MySQL主上加锁,阻止所有的写入操作

mysql> FLUSH TABLES WITH READ LOCK;

5、MySQL主上,查看bin-log的文件名和位置

mysql> SHOW MASTER STATUS;

image.png

前面已经设置log-bin=151_mysql,这里File还是binlog.000001,所以需要刷新一下log

mysql> flush logs;

再次执行show master status,此时File变为我们前面设定好的150_mysql

image.png

6、MySQL主上dump所有数据,用于同步现有主上的数据。注意,前面主上已经锁表,因此我们不能在主上退出mysql客户端,需重新开启一个服务器的连接来执行以下命令。执行完毕后,会生成一个dbdump.db的文件。

mysqldump --all-databases --master-data > dbdump.db -uroot -p

image.png

7、将dbdump.db文件传送到从上。

scp dbdump.db root@192.168.0.151:~

image.png

从上也有了dbdump文件

image.png

现在MySQL主可以进行解锁,解锁后,主上可以写入数据

mysql> UNLOCK TABLES;

8、MySQL从上导入之前dump的数据。注意,下面的命令不是在mysql的客户端执行的,需退出mysql的客户端。

mysql < dbdump.db -uroot -p

image.png

导入完毕之后,MySQL从上拥有了主上同样的数据

image.png

9、MySQL从上配置主从连接信息

mysql> CHANGE MASTER TO
    -> MASTER_HOST='master_host_name',     
    -> MASTER_PORT=port_num,
    -> MASTER_USER='replication_user_name', 
    -> MASTER_PASSWORD='replication_password',                
    -> MASTER_LOG_FILE='recorded_log_file_name',       
    -> MASTER_LOG_POS=recorded_log_position;
  • master_host_name : MySQL主的地址
  • port_num : MySQL主的端口(数字型)
  • replication_user_name : 备份账户的用户名
  • replication_password : 备份账户的密码
  • recorded_log_file_name :bin-log的文件名
  • recorded_log_position : bin-log的位置(数字型)
  • bin-log的文件名和位置 是 步骤5中的show master status 得到的。

10、MySQL从上开启同步

mysql> START SLAVE;

image.png

查看MySQL从的状态

mysql> show slave status;

image.png

三、测试验证

在MySQL主上插入一条新数据

image.png

数据已同步到从上

image.png


强力小磊哥
79 声望6 粉丝

翻过一座山,就高过一座山