1.使用docker拉取Mysql镜像
2.创建两个Mysql容器(master和slave)
docker run --name mysql-master -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=admin123456 -v /root/mysql/slave/data:/var/lib/mysql -v /root/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /root/mysql/slave/test/mysql_master_slave/slave/mysql-files:/var/lib/mysql-files mysql
docker run --name mysql-slave -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=admin123456 -v /root/mysql/slave/data:/var/lib/mysql -v /root/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /root/mysql/slave/test/mysql_master_slave/slave/mysql-files:/var/lib/mysql-files mysql
3.修改my.cnf的配置(master和slave)
[mysqld] server_id = 101 log-bin= mysql-master-bin read-only=0 replicate-ignore-db=mysql replicate-ignore-db=sys replicate-ignore-db=information_schema replicate-ignore-db=performance_schema
[mysqld] server_id = 102 log-bin= mysql-slave-bin read-only=0 replicate-ignore-db=mysql replicate-ignore-db=sys replicate-ignore-db=information_schema replicate-ignore-db=performance_schema
4.进入主的mysql,完成从的用户创建
CREATE USER 'slave'@'%' IDENTIFIED BY '你自己的密码'; GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%'; flush privileges;
这个flush privileges;很重要,我自己就是忘记了然后出错,卡了我很久。
flush privileges作用:mysql 新设置用户或更改密码后需用flush privileges刷新MySQL的系统权限相关表,否则会出现拒绝访问
4.在主库,查看master的相关参数
mysql> show master status; +-------------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +-------------------------+----------+--------------+------------------+-------------------+ | mysql-master-bin.000002 | 4405 | | | | +-------------------------+----------+--------------+------------------+-------------------+
4.需要查看docker中主库容器的地址
[root@rocketmqOS conf]# docker inspect mysql-master | grep IPA
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.2",
"IPAMConfig": null,
"IPAddress": "172.17.0.2",
5.进入从机的mysql中,完成slave的配置。
change master to master_host='172.17.0.2',master_user='slave', master_password='admin123456',master_port=3306, master_log_file='mysql-master-bin.000002', master_log_pos=4405,master_connect_retry=30;
start slave;
show slave statusG; Slave_IO_Running: Yes Slave_SQL_Running: Yes #如果这两个yes出现,就意味着安装成功
踩雷:
虽然感觉步骤很简单,但是我在里面踩了很多很多坑,比如说安装好了mysql之后登录不进去,Slave_IO_Running: Connecting Slave_SQL_Running:No,Nivacate没法远程连接,可以照着网上好好查一下,慢慢解决,下次再遇到之后就把这些错误记录下来。



