MySQL的主从复制
1. 环境说明 * docker启动 docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=HeXXXX mysql:8.0.18 --lower_case_table_names=1 * mysql.cnf中修改默认时区为上海 /etc/mysql/my.cnf [mysqld] default-time-zone='+8:00' * 主机: 阿里云的MySQL数据库 - mysql8.0.18 - mysql.hepengju.com 101.132.97.183 - root/HeXXXX * 从机: 腾讯云的MySQL数据库 - mysql=8.0.18 - mysql.hepengju.cn 118.24.46.154 - root/HeXXXX 2. 备份主机数据并再从机恢复 * 主机备份: docker exec mysql8 sh -c 'exec mysqldump --all-databases -uroot -pHeXXXX' > all_$(date +%Y%m%d).sql * 从机恢复: docker exec -i mysql8 sh -c 'exec mysql -uroot -pHeXXXX' < all_$(date +%Y%m%d).sql 3. 理论说明, 参考: https://www.cnblogs.com/hahahehexixihoho/p/10116061.html * 主机 1) 配置唯一的server-id 2) 开启二进制日志 3) 获得master二进制日志文件名及位置 4) 创建一个用于slave和master通信的用户账号 * 从机 1) 配置唯一的server-id 2) 使用master分配的用户账号读取master二进制日志 3) 启动slave服务 4. 操作步骤 * 主机 1) 修改mysql.cnf文件, [mysqld]之后加入以下配置 ``` [mysqld] server-id=1 log-bin=mysql-bin ``` 2) 重启mysql, 并创建用于同步的用户账号并分配权限 ``` CREATE USER 'repl'@'118.24.46.154' IDENTIFIED BY 'repl'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'118.24.46.154'; flush privileges; ``` 3) 查看master状态, 记录二进制文件名和位置 ``` show master status ``` * 从机 1) 修改mysql.cnf ``` [mysqld] server-id=2 ``` 2) 重启MySQL,打开mysql会话,执行同步语句(注意二进制文件和位置参数) ## 注意: MySQL8的参考手册 P240页 caching_sha2_password and Replication 部分 ``` change master to master_host='101.132.97.183', GET_MASTER_PUBLIC_KEY = 1, master_user='repl', master_password='repl', master_log_file='mysql-bin.000001', master_log_pos=872; ``` 3) 启动slave同步进程并查看状态 ``` start slave; show slave status\G; # 当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功了 ```
分类:
数据库
【推荐】国内首个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