数据库主从架构是大数据时代实现高效数据管理的重要手段。 通过将读和写操作分散到不同的数据库服务器上,可以提高系统的可扩展性和可靠性。 而数据同步、数据备份、主从切换以及维护和管理等方面是保证主从数据库高效运行的关键技术环节。
一、搭建主数据库
要想搭建主从数据库首先要建立所需要的主从文件夹
mkdir -p software/mysql/3306 software/mysql/3310 software/mysql/3311
(1)、建立文件夹之后则是要先建立主数据库,建立主数据库之前应该从其他容器中复制一个my.cnf到conf文件夹中。
docker run -it --name mytest -e MYSQL_ROOT_PASSWORD=123 -d mysql
docker cp mytest:/etc/mysql/my.cnf ./
(2)、接下来则是搭建主数据库容器mysql_3306
docker run \
-it \
--name mysql_3306 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.x \
-p 3306:3306 \
-v /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql
(3)、搭建完主容器,接下来则要进行的是对于my.cnf的设置,利用vim来进行设置。
主要设置的则是以下配置
serve-id=200 #每个id不可一样
log_bin=master-logbin #主容器的名字
binlog_format=row
(4)、接下来则是进行查看是否配置成功,如果两个都是yes则为配置成功。
show slave status \G;
(5)、接下来则进行客户端测试,若显示为此图则是配置成功。
解决方法
如果没有连接成功,并且在过程中也没有技术上的失误的话,可以用以下方法来进行处理。
1、第一个方法是开启对应容器的防火墙
firewall-cmd --add-ports=3306/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
2、第二个方法则是重新启动虚拟机。
二、从数据库配置
配置完主数据库,接下来则进行从数据库的配置
配置从数据库其实和配置主数据库的方式差不多
(1)、第一步也是进行my.cnf的复制,将其复制到从数据库的ocnf文件夹中。
(2)、第二步则是创建slave容器
docker run \
-it \
--name mysql_3310 \
--privileged \
--network wn_docker_net \
--ip 172.18.12.x \ #注意IP地址不能重复
-p 3310:3306 \
-v /usr/local/software/mysql/3310/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3310/data:/var/lib/mysql \
-v /usr/local/software/mysql/3310/mysql-files:/var/lib/mysql-files \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql
(3)、接下来则是进行my.cnf的设置
server-id=201
log_bin=slave-01-logbin
relay_log=slave-01-relay
read-only=1
(4)、修改完设置之后,如果先前的主数据库可以打开的话,可以直接进入数据库进行master创建用户salve进行关联,若是数据库打开出现了问题也可以直接在docker内进入数据库进行创建。
create user 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123';
GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO 'slave'@'%';
flush privileges;
(5)、创建完用户之后,进入从服务器内部,再进入前可以先去查一下主服务器的名称,并且记录下来。
(6)、进入从服务器内部之后根据记录下来的主数据库数据填入以下代码。
change master to master_host='172.18.12.x', master_user='slave',master_password='123',MASTER_LOG_FILE='master-logbin.000001',MASTER_LOG_POS=157;
(7)、接下来则启动slave,启动之后进入数据库进行测试是否连接成功。
主从连接出现问题的解决方式
主从配置出现非两个YES的时候
1、可以关闭slave
stop slave
2、重置slave
reset slave;
3、重新配置change to
show master status; #maseter
change master to master_host='172.18.12.2', master_user='slave',master_password='123',MASTER_LOG_FILE='wnhz-master-logbin.000001',MASTER_LOG_POS=156; #slave
4、重新运行slave
start slave;
以上则是主从数据库搭建的大致方法。