MySQL主从配置
Posted You295
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL主从配置相关的知识,希望对你有一定的参考价值。
mysql主从配置
一:简介
主从同步可以使数据从一个数据库服务器复制到其他的服务器上,在复制的时候,一个数据库服务器当做主服务器(master),其余的服务器当做从服务器(slave)。复制是异步进行的,故服务器不需要一直连接着主服务器,并且从服务器也是可以通过拨号的方式断断续续的连接主服务器。通过配置文件,可以指定复制所有的数据库,或者某个数据库,甚至是某个数据库上的某个表。
二:优点
1)如果主库出现问题的时候,可以快速的切换到从库来提供服务。
2)可以再从库上执行查询操作,在主库中更新,以此来减轻主库的压力。
3)实现读写分离,在从库中执行备份,避免在备份期间影响主库的服务。
三:流程(docker下mysql的主从配置)
1.docker中安装mysql
1.1.从仓库中查询mysql
[root@localhost ~]# docker search mysql
1.2。 下载mysql镜像
[root@localhost ~]# docker pull docker.io/mysql
1.3. 查询镜像是否下载成功
[root@localhost ~]# docker image ls
1.4. 运行docker 容器(container, 主服务器(master))
docker run -itd --name=mysql_master -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123 docker.io/mysql
1.5. 查询mysql进程是否启动
[root@localhost ~]# docker ps
1.6.和上面同样的方法下载一个从容器
1.7。运行从容器
[root@localhost ~]# docker run -itd --name=mysql_slave -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123 docker.io/mysql
1.8查看启动的container
两个数据库都启动即可。
2. 配置主(master)服务器
2.1 进入master服务器容器内
[root@localhost ~]# docker exec -it mysql_master /bin/bash
2.2 进入/etc/mysql文件夹
root@4abf554ea1e4:/# cd etc/
root@4abf554ea1e4:/etc# cd mysql
root@4abf554ea1e4:/etc/mysql#
root@4abf554ea1e4:/etc/mysql# ls
conf.d my.cnf my.cnf.fallback
2.3 使用vi/vim编辑my.cnf文件
显示上面的信息,证明没有安装vim,即需要安装vim
2.3.1。执行 apt-get update
root@4abf554ea1e4:/etc/mysql# apt-get update
2.3.2。执行apt-get install vim 安装vim
root@4abf554ea1e4:/etc/mysql# apt-get install vim
2.3.3.使用vi编辑 my.cnf
root@4abf554ea1e4:/etc/mysql# vi my.cnf
2.3.4.在my.cnf添加代码(使用“i” 键进入编辑模式
保存修改
按回车键继续
重新启动容器让配置生效
2.4.创建专用账户(slave)进行主从同步
2.4.1.使用root账户登入mysql
[root@localhost ~]# docker exec -it mysql_master /bin/bash
root@4abf554ea1e4:/# mysql -u root -p
Enter password:
2.4.2.创建专用同步账户(slave)
3.配置从(slave)容器
3.1。 进入slave服务器容器内
3.2.进入/etc/mysql文件夹
3.3。使用vi/vim编辑my.cnf文件
没有安装同上方在主容器中安装vim方法一样
安装好后进入:
4.主从复制
4.1。查看master状态
4.4.1。进入master mysql 容器
[root@localhost ~]# docker exec -it mysql_master /bin/bash
[root@4abf554ea1e4:/# mysql -u slave -p
4.4.2.显示主服务器状态
mysql> show master status;
4.2.在slave中执行命令
4.2.1.查询master容器的独立IP
[root@localhost ~]# docker inspect --format='.NetworkSettings.IPAddress' mysql_master
## mysql_master--master容器的名称
4.2.2.进入slave容器中
[root@localhost ~]# docker exec -it mysql_slave /bin/bash
4.2.3.执行SQL语句
mysql> change master to
master_host='172.17.0.2',
master_user='slave',
master_password='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1327;
Query OK, 0 rows affected, 8 warnings (0.03 sec)
4.2.4.开启主从复制过程
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
到此就配置结束
5. 问题及解决方案
第一种错误情况
error connecting to master ‘slave@172.17.0.2:3306’ - retry-time: 60 retries: 2 message:
Authentication plugin ‘caching_sha2_password’ reported error: Authentication requires
secure connection.
解决办法:在master服务器修改用户密码信息
ALTER USER ‘slave’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123’;
FLUSH PRIVILEGES;
解锁表
unlock tables
第二种错误情况
Slave failed to initialize relay log info structure from the repository, Error_code: 1872
解决方案:
stop slave; //关闭slave
reset slave;//重置slave
重新运行change master to :
mysql> change master to
master_host='172.17.0.2',
master_user='slave',
master_password='123',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=1327;
Query OK, 0 rows affected, 8 warnings (0.03 sec)
start slave;
以上是关于MySQL主从配置的主要内容,如果未能解决你的问题,请参考以下文章