我的是自己搭建的一个数据库作为主库,使用docker 作为 从库
注意: 数据库版本保持一致!!!数据库版本保持一致!!!数据库版本保持一致!!!
1. 查看住库版本
我的是: 5.6.45
2.安装docker
参考地址:https://www.docker.com/
3.docker 安装mysql 5.6.45
小白请参考docker 文档操作
docker pull mysql:5.6.45
docker images可查看刚pull 的 mysql.如若过慢可自行修改镜像.
docker run -p 3360:3306 --name mymysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6.45启动mysql
-p 3360:3306 端口映射 外网链接数据时请使用 3360 (尽量选择没被占用的端口)
--name mymysql 定义名称 (mymysql 随意)
-e MYSQL_ROOT_PASSWORD=123456 设置密码
-d mysql:5.6.45 启动的镜像
docker inspect redismaster查看一下容器的IP (可跳过、后面mysq配置可用)
ok 重点、重点、重点
修改主库配置文件
修改 mysql.ini (或 mysql.cnf) -- 有些人配置比较不通
[mysqld]
## 设置server_id 注意要唯一、注意要唯一、注意要唯一
server-id=1 ## 这个就是在上面讲的可获取内网IP的用处 尽量使用内网IP的最后一段 比较好区分
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
修改从库配置文件
进入容器
docker exec -it 8dfabd8ad85b /bin/bash
-it 8dfabd8ad85b 这个是docker 容器运行时的ID 可使用 docker ps 查询
安装 vim
第一步:apt-get update
第二步:apt-get install vim
cd /etc/mysql/
由于mysql的版本有点高,配置文件简直就是套娃啊,一层一层的.打开后就是加载、加载、加载.
直接 vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
## 设置server_id 注意要唯一、注意要唯一、注意要唯一
server-id=2 ## 这个就是在上面讲的可获取内网IP的用处 尽量使用内网IP的最后一段 比较好区分
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin
重启mysql service mysql restart
由于重启mysql后容器会停止,接下来启动容器
docker start mymysql
mymysql 容器名称 上面的启动是已说明
就此、准备工作完成,接下来我们开始配置主从复置工作
1. 查看主库的日志状态
show master status;
File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000011 | 876059
File、Position,这两个字段的值一定要记录一下,下面用得上.
2.在主库设置一个复制的账号.
方法万万千,我就不赘述了
3.进入docker 的mysql 运行容器
docker exec -it 8dfabd8ad85b /bin/bash
进入mysql mysql -uroot -p
执行:
change master to master_host='172.17.0.1', master_user='root', master_password='123456', master_port=3306, master_log_file='mysql-bin.000011', master_log_pos= 876059, master_connect_retry=30;
master_host='172.17.0.1' 主库的IP
master_user='root' 上一步设置的主库复制账号
master_password='123456' 上一步设置的主库复制账号密码
master_port=3306 主库端口
master_log_file='mysql-bin.000011 这个就是上面讲的需要记录的 File 字段的值
master_log_pos= 876059 这个就是上面讲的需要记录的 Position 字段的值
master_connect_retry=30 如果主从链接失败的超时时间 默认:60 (s)
OK、配置完毕,可以启动了 启动之前先看看当前状态吧
show slave status \G;
被我圈红色的表示暂时并没有启动.接下来我们启动一下
start slave start|stop slave (我看了一下其他的博客写的是 slave start 醉了)
再次查看状态:
show slave status \G;
Last_Errno: 1062
Last_Error: Error 'Duplicate entry '22980' for key 'PRIMARY'' on query.
这个时候应该会报错
显然这个问题是因为插入重复主键导致从库不工作了
解决方法一:
mysql>slave stop;
mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql>slave start;
解决方法二:
slave_skip_errors = 1062
再次从起mysql 重启 docker 即可
解决完毕后再次 start slave
再次查看状态: show slave status \G;
完成
测试一下吧
在主库随便修改一下数据或者字段去从库试试吧