实现ubuntu中的mysql8和docker部署的mysql8主从同步
2022/3/3 2:15:29
本文主要是介绍实现ubuntu中的mysql8和docker部署的mysql8主从同步,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
@TOC
前言(MySQL版本8.0.28)
最近学习mysql主从搭建,看了好多教程都是在docker容器中创建mysql主机和从机的,但是我自己的主数据库是在ubuntu里面的不想再迁移到docker的容器中,所以把ubuntu中的mysql作为主机,把docker中的作为从机。
其中也是踩了很多坑,希望这篇文章对大家有用~~~
提示:以下是本篇文章正文内容,下面案例可供参考
一、配置主机
配置ubuntu中的mysql
cd /etc/mysql/ vim my.cnf ##在my.cnf中添加如下配置 [mysqld] server-id=1 ## 同一局域网内要唯一 log-bin=master-bin ##二进制文件名称 【mysql8默认开启binlong】 binlog-format=ROW ##二进制日志格式 row,statement,mixed
配置好了之后,进入mysql查看日志文件。
SHOW MASTER STATUS;#查看二进制日志文件
查看文件日志文件之后记录file和position字段的值
此时一定一定一定不要再操作数据库了!!否则日志文件会更新会导致后面主从连接建立失败!!!!
最后,重启主机mysql服务
sudo service mysql restart
二、配置mysql从机
1.在docker中拉取mysql镜像,版本保持和你的主机mysql一致
sudo docker image pull mysql:8.0.28 #我的mysql是8.0.28的后面这个根据你的版本修改
2.创建mysql容器
- 以守护进程的方式运行mysql从机
docker run -d -i --name mysql-slave -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 mysql:8.0.28 #密码为初始root账户的密码,设置之后请务必记住。
因为这里我的mysql主机是在ubuntu中,从机是在docker容器中,ip地址不一样所以端口号可以都设置成3306。
- 查看创建的mysql容器的ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称 or 容器id
- 测试从机是否创建成功
mysql -uroot -ppassword -h 容器ip
如果能够进入mysql则说明创建成功
3.配置mysql从机
docker exec -it mysql-slave bash vim /etc/mysql/my.cnf [mysqld] server-id=2 log-bin=mysql-slave-bin ## 配置中继日志 relay_log=mysql-relay-bin read_only=1 ## 设置为只读
这里如果提示bash: vim: command not found,则我们需要在docker内部安装vim工具,执行如下两行命令,然后进行上述操作。
apt-get update apt-get install vim -y
到此从机配置已经完成,重启一下mysql容器
sudo docker container stop 容器名或容器id sudo docker container start 容器名或容器id
- Docker中MySQL从机连接ubuntu中MySQL主机
mysql -uroot -ppassword -h 容器ip
之后执行
change master to master_host='主机ip', master_user='root', master_password='主机mysql密码', master_port=3306, master_log_file='主机的日志文件名称', master_log_pos=主机日志文件的position, master_connect_retry=30;
master_host :主机p,即是ubuntu的ip地址,利用命令ifconfig可得 master_user:写主机root用户就好,因为root权限多,操作方便 master_password:就是主机用户的密码,master_user用户写的谁,就是谁的密码 master_log_file:主机中查出来的File字段的值 master_log_pos:主机中查出来的Position的值
最后,开启从机服务
# 开启从机服务 $ start slave;
到此就配置完成了。
4.验证是否主从连接成功
# 展示从机服务状态 $ show slave status \G
验证成功!
Slave_IO_Running: Yes Slave_SQL_Running: Yes
总结
以上就是全过程啦,亲测有效!如果 最后的Slave_IO_Running,Slave_SQL_Running不全是YES的话就是连接失败了。解决方法的话…只能通过一一排查来解决问题,我的话是直接重新配置mysql从机,就ok啦,希望对大家有帮助!
这篇关于实现ubuntu中的mysql8和docker部署的mysql8主从同步的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-04部署MySQL集群项目实战:新手入门教程
- 2024-11-04如何部署MySQL集群资料:新手入门指南
- 2024-11-02MySQL集群项目实战:新手入门指南
- 2024-11-02初学者指南:部署MySQL集群资料
- 2024-11-01部署MySQL集群教程:新手入门指南
- 2024-11-01如何部署MySQL集群:新手入门教程
- 2024-11-01部署MySQL集群学习:新手入门教程
- 2024-11-01部署MySQL集群入门:新手必读指南
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南