docker配置mysql主从

网友投稿 232 2022-10-20

docker配置mysql主从

1、下载MySQL镜像

docker pull mysql:5.7docker images

2、启动MySQL容器

#主库docker run -p 3316:3306 --name main_mysql -e MYSQL_ROOT_PASSWORD=pwd@123 -d mysql:5.7#从库docker run -p 3326:3306 --name slave_mysql -e MYSQL_ROOT_PASSWORd=pwd@123 -d mysql:5.7

3、查看容器状态

docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES1b9cc22c327b mysql:5.7 "docker-entrypoint.s…" 47 minutes ago Up 22 minutes 33060/tcp, 0.0.0.0:3326->3306/tcp slave_mysqld4bc65eb3708 mysql:5.7 "docker-entrypoint.s…" 48 minutes ago Up 22 minutes 33060/tcp, 0.0.0.0:3316->3306/tcp main_mysql#启动完成后#使用Navicat工具测试连接两个连接,分别为master和slave

4、修改主MySQL容器配置

docker exec -it 容器Id /bin/bashcd /etc/mysql/mysql.conf.d#安装vim命令:apt-get updateapt-get install vimvim mysqld.cnf[mysqld]## 同一局域网内注意要唯一server-id=100## 开启二进制日志功能,可以随便取(关键)log-bin=mysql-bin

5、修改从MySQL容器配置

docker exec -it 容器Id /bin/bashcd /etc/mysql/mysql.conf.d#安装vim命令:apt-get updateapt-get install vim[mysqld]## 设置server_id,注意要唯一server-id=101 ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用log-bin=mysql-slave-bin ## relay_log配置中继日志relay_log=edu-mysql-relay-bin

6、重启MySQL主从容器

docker restart 主容器Iddocker restart 从容器Id

7、创建主MySQL的授权访问用户

docker exec -it 容器Id /bin/bashmysql -uroot -ppwd@123#创建用户并授权,允许从库服务连接主库的服务CREATE USER 'slave'@'%' IDENTIFIED BY 'pwd@123';GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';#生效 刷新一下,flush privileges;

8、查看主库的binlog文件

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

9、查看主MySQL容器的host

docker inspect --format='{{.NetworkSettings.IPAddress}}' main_mysql172.17.0.2

10、配置从MySQL容器的读取设置

docker exec -it 从容器Id /bin/bashmysql -uroot -ppwd@123change master to master_host='172.17.0.2', master_user='slave', master_password='pwd@123', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos= 769, master_connect_retry=30;#生效 刷新一下,flush privileges;

11、开启事务

#查看从库的状态show slave status \G Slave_IO_Running: No Slave_SQL_Running: No #开启事务start slave;show slave status \G Slave_IO_Running: Yes Slave_SQL_Running: Yes

12、测试

#在主库建设一个库 进行测试#主库docker exec -it main_mysql shmysql -uroot -ppwd@123create database test;mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys || test |+--------------------+#从库docker exec -it slave_mysql shmysql -uroot -ppwd@123mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || sys || test |+--------------------+5 rows in set (0.00 sec)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:何以解忧,唯有学习:基于Kubernetes的容器云平台实践
下一篇:关于jackson序列化和feign返回值的问题
相关文章

 发表评论

暂时没有评论,来抢沙发吧~