搭建 mysql 主从服务器
搭建mysql主从服务器
Ubantu/Linux
环境要求:
- Docker
- MySQL
搭建步骤
1、docker 拉取 mysql 镜像
# 查看系统 MySQL 版本,也通过进入 mysql 来查看
mysql -V 或 mysql -uroot -p
# 拉取相同版本的 mysql 镜像。不同版本的 mysql 可能无法建立主从联系
sudo docker pull mysql:5.7.34
2、主机配置
-
以系统 mysql 作为主机,修改主机配置文件
# 文件位置:/etc/mysql/mysql.conf.d/mysqld.cnf # 开启日志 general_log_file = /var/log/mysql/mysql.log general_log = 1 # 服务id server-id = 1 # 开启从机访问接口:二进制日志 log_bin = /var/log/mysql/mysql-bin.log
-
重启主机,查看主机状态
# 重启 mysql 主机。停止和启动分别对应 stop/start sudo service mysql restart # 进入 mysql mysql -uroot -p # 查看主机状态。会显示 File 和 Position,请记住,这需要在从机中设置。 show master status;
-
创建从机用户
# 创建从机用户。 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' identified by 'slave'; # 刷新权限 REPLICATION SLAVE;
tips:
REPLICATION SLAVE 权限是全局性的,必须作用于所有数据库: *.*
可以在主机配置文件中限制从机能访问的数据库:
# 允许从机访问:二进制日志要记录数据库 binlog_do_db = include_database_name # 不允许从机访问:二进制日志要忽略的数据库 binlog_ignore_db = include_database_name
3、从机配置
-
创建从机配置文件
# 创建从机目录 mkdir slave_mysql/ cd slave_mysql/ mkdir data mkdir mysql.conf.d # 复制主机配置文件:/etc/mysql/mysql.conf.d/mysqld.cnf cp /etc/mysql/mysql.conf.d/mysqld.cnf mysql.conf.d/ # 修改配置文件 # 修改端口号 port = 3307 # 关闭日志 #general_log_file = /var/log/mysql/mysql.log general_log = 0 # 服务id server-id = 2 # 关闭二进制日志 # log_bin = /var/log/mysql/mysql-bin.log
-
启动 docker mysql 从机
# MYSQL_ROOT_PASSWORD 为 root 密码,需牢记。 sudo docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v ~/slave_mysql/data:/var/lib/mysql -v ~/slave_mysql/mysql.conf.d:/etc/mysql/mysql.conf.d mysql:5.7.34
如果从机无法启动,请删除容器、slave_mysql/data文件下所有文件,重新尝试。
sudo docker rm -f mysql-slave rm -rf ~/slave_mysql/data/*
-
进入从机,连接主机,查看状态。
# 进入从机 mysql -uroot -pmysql -h 127.0.0.1 --port=3307 # 连接主机 change master to master_host='127.0.0.1', master_user='slave',master_password='slave',master_log_file='mysql-bin.000009',master_log_pos=1562; # master_host 主机ip, master_user 主机用户指定为刚创建的从机用户, # master_log_file 和 master_log_pos 分别是主机状态中的 File 和 Position # 开启从机 start slave # 查看从机状态 show slave status \G; # 以下两项状态如下,则连接成功。 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes
如果连接失败,请删除容器、从机目录后,重新尝试。
4、同步数据
# 复制主服务器的数据库 --all-databases 复制所有数据库
> mysqldump -uroot -pmysql --databases db_name --lock-all-tables > ~/master_db.sql
# 同步数据库到从服务器
> mysql -uroot -pmysql -h127.0.0.1 --port=3307 < ~/master_db.sql
如果觉得本文有用,万望看官慷慨解囊,不吝打赏,激励本编提供更加优质的内容
[点击进行打赏](https://www.cnblogs.com/52note/p/16507868.html)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix