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 status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#如果这两个yes出现,就意味着安装成功
踩雷:
虽然感觉步骤很简单,但是我在里面踩了很多很多坑,比如说安装好了mysql之后登录不进去,Slave_IO_Running: Connecting Slave_SQL_Running:No,Nivacate没法远程连接,可以照着网上好好查一下,慢慢解决,下次再遇到之后就把这些错误记录下来。