原材料:
1.两台服务器(101.101.101.20,101.101.010.21);
2.MySQL安装包(最好版本一致,若不一致相差版本不大也可以,我这里准备的是MySQL5.7.29)

主服务器搭建
1.我们指定20的服务器为主机,进行MySQL安装,安装过程略;
2.安装好之后,编辑配置文件:
3.vim /etc/my.cof,在[mysqld]节点内,添加:

  1. server-id=1;#这里是一个数字,不和从库重复即可
  2. log-bin=msyql-bin;#表示开启mysql的log-bin日志功能
  3. binlog-do-db=market_wang;#指定需要主从复制的数据库,自定义即可
  4. binlog_format=STATEMENT;#表示基于SQL语句的复制

如图:

centos7 docker mysql 主从复制 搭建mysql主从复制_重启


保存后退出,重启mysql.

4.启动主机的mysql服务,进入mysql:mysql -uroot -p123456;

5.在主机上,为从机创建一个账户,用于主从复制,并赋予权限:GRANT REPLICATION SLAVE ON . TO ‘slave’%’ IDENTIFIED BY ‘123456’,如图;

需要记住这个账号和密码,待会要用

centos7 docker mysql 主从复制 搭建mysql主从复制_重启_02


6.查看主机状态:show master staus;

centos7 docker mysql 主从复制 搭建mysql主从复制_mysql_03


记住这个File文件名和Postion的值,待会也要用,
至此,主机配置完成,在配置完从机之前,主机先不要进行任何操作。

从机配置:

1.在101.101.010.21上安装mysql,完成后重启,进入mysql;

2.修改从机配置文件:vim /etc/my.cnf,在[mysqld]节点内,添加:

  1. server-id=11;#这里是一个数字,不和从库重复即可
  2. relay-log=msyql-relay;#表示从机启用中继日志

3.保存后重启从机MySQL

补充,从机重启成功后,可检测一下两个数据库是否可以相互进行远程访问,测试在从机远程登陆主机数据库,命令:mysql -uroot -p123456 -h 101.101.101.20 -P 3306;其中:-h表示远程登陆,后面参数跟目标主机IP,-P表示指定访问端口,若主机配置正确,则可进入主机mysql,再切换到主机下,尝试远程登陆从机,双方可以相互登陆,则配置正确
4.进入从机数据库,在从机上配置需要复制的主机,命令:

在CHANGE MASTER TO MASTER_HOST='01.101.101.20',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000016',MASTER_LOG_POS=1241;

这里MASTER_HOST对应主机IP,MASTER_USER和MASTER_PASSWORD对应刚刚在主机创建的,用于复制的用户名和密码,MASTER_LOG_FILE文件名、MASTER_LOG_POS对应主机:show master status 展示的 两个值;

5.启动从机服务:start slave;

6.show slave status \G;如果提示中有这样的信息,则配置成功:

centos7 docker mysql 主从复制 搭建mysql主从复制_mysql_04


主从复制测试:

登陆主机,新建数据库,注意,此时新建的数据库名,需要指定为配置文件中约定的market_wang,不能随意命名

1.在该数据库下创建表:create database market_wang;

2.切换到该数据库下:use market_wang;

3,创建一张测试表:create table mytable(id int,name vachar(100));

4.插入一条数据:insert into mytable values(1,‘zhangsan’);

5,查询一下:select * from mytable;可以看到,一条数据插入成功;

centos7 docker mysql 主从复制 搭建mysql主从复制_重启_05


6.切换到从库,进入mysql,show database;可以看到,market_wang 在从库也创建成功

centos7 docker mysql 主从复制 搭建mysql主从复制_重启_06


7.查询该库下面的的mytable表,可以看到,刚刚在主库中插入的数据已经被复制过来

centos7 docker mysql 主从复制 搭建mysql主从复制_mysql_07


至此,主从复制(一主一从)搭建基本完成。