mysql 双主配置 基于docker 测试 及数据恢复测试
来源:互联网 发布:python sys.exit 2 编辑:程序博客网 时间:2024/06/05 09:27
基于docker 1.10.3
镜像地址:https://hub.docker.com/_/mysql/
docker 相关的我就不介绍了,如果不是docker 也没有关系,自己装两个mysql 命令基本是一样的。都能看懂的。用docker 主要是测试方便
启动两个myql的容器
为了方便我们自己建容器网络(docker 1.9后)
docker network create -d bridge --subnet=152.168.0.0/16 my_net
mysql1
docker run --name mysql1 --net=my_net --ip=152.168.0.2 -v /etc/mysql1:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d 0bd9ef0792fa
mysql2
docker run --name mysql2 --net=my_net --ip=152.168.0.3 -v /etc/mysql2:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d 0bd9ef0792fa
在mysql1 volume 中放入config-file.cnf 扩展容器中的my.cnf
[mysqld]
log-bin = mysql-bin #名字
server-id = 1 # 各节点不同即可
expire-logs-days = 100 #过多少天清除日志
binlog-ignore-db = mysql #忽略库
log-slave-updates #这个参数用来配置从服务器的更新是否写入二进制日志,从库作为别人的主 需要
auto-increment-increment = 2 # 自增长度
auto-increment-offset = 1 # 从多少开始,防止自增主键同步重复
在mysql2 volume 中放入config-file.cnf 扩展容器中的my.cnf
[mysqld]
log-bin = mysql-bin
server-id = 2
expire-logs-days = 100
binlog-ignore-db = mysql
log-slave-updates
auto-increment-increment = 2
auto-increment-offset = 2
开始设置主从复制
在mysql1执行
GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456';
然后 执行show master staus; # 查看binlog信息
然后去mysql2 执行
change master to master_host='152.168.0.2',master_user='mysync',master_password='123456', master_log_file='mysql-bin.000002',master_log_pos=228;
start slave;
show slave status\G
两个yes代表成功。不成功下面有错误信息和原因
然后在mysql2上执行
GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by '123456';
然后 执行show master staus; # 查看binlog信息
然后去mysql1 执行
change master to master_host='152.168.0.3',master_user='mysync',master_password='123456', master_log_file='mysql-bin.000003',master_log_pos=228;
start slave;
show slave status\G
同样检查是否成功。
正常的mysql重启,slave现成也会自动重启,自动完成未完成的复制。
注意点: 如果双主 用keepalived做高可用 mysql1 挂了,切换到mysql2 ,然后mysql1 恢复,如果配置了keepalived 的切换,如果数据量大 则 会存在问题,小数据量不会有问题。
手动测试恢复:
docker stop mysql2
docker exec -it mysql1 mysqldump -uroot -p123456 -B my_test my_test2 my_test3 -l -F > /mnt/0815.sql
mysql执行备份语句 -l 加锁-F 重置 binglog,-B是有建库语句 ,然后mysql2
stop slave,手动恢复数据:
docker exec -it mysql2 mysql -uroot -p123456 < /mnt/0815.sql
然后从新binlog开始同步 ,注意修改mysql1 上show master status; 的结果
change master to master_host='152.168.0.2',master_user='mysync',master_password='123456', master_log_file='mysql-bin.000002',master_log_pos=228;
start slave;
show slave status\G
0 2
- mysql 双主配置 基于docker 测试 及数据恢复测试
- MySQL binlog基于时间点的恢复测试
- 基于docker搭建测试环境
- Mysql主从复制配置及测试
- MyBatis+mysql简单配置及测试案例
- docker容器配置网络流量测试
- mysql单表恢复--测试
- 基于docker搭建测试环境(二)
- 基于 docker 的 UI 自动化测试实践
- 基于docker的GPU测试方法
- centos7下安装mysql及测试(基于Nodejs)
- mysql数据完整性测试
- mysql cluster配置测试
- mysql cluster配置测试
- opensips配置及测试
- 环境变量配置及测试
- mysql数据备份及恢复
- Mysql 复制-基于GTID 测试
- RxJava Retrofit2 网络请求,返回数据格式统一的数据报文处理方法
- JS中的立即执行函数
- C#中那些[举手之劳]的性能优化
- 使用Guava+Spring实现异步回调操作,提高程序性能
- TCP回射1-----线程
- mysql 双主配置 基于docker 测试 及数据恢复测试
- C\C++中结构体变量与结构体指针内存分配问题
- win10如何使任务栏全透明
- Thread And Timer
- Sharing Files with NFC ->Receiving Files from Another Device
- MongoDB入门知识
- 对于重新布局和重绘的理解
- jni文件的编译和使用
- PHP-Ajax实现无刷新分页