MySQL主从配置

Posted You295

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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主从配置的主要内容,如果未能解决你的问题,请参考以下文章

Mysql主从配置,实现读写分离

mysql主从配置,读写分离

MySQL主从复制与读写分离配置及实操

Mysql主从配置,实现读写分离

centos 5.4中mysql主从同步配置方法

Mysql主从配置和跳过事务