Mysql搭建互为主从数据库
- 一、搭建前期说明
- 二、mysql文件结构以及配置说明
- 1、mysqlA文件结构
- 2、mysqlB文件结构
- 3、mysqlA的配置文件my.cnf
- 4、mysqlB的配置文件my.cnf
- 5、启动mysqlA服务器脚本startMysqlA.sh
- 6、启动mysqlB服务器脚本startMysqlB.sh
- 7、查看服务启动情况
- 三、设置主从同步
- 1、给同步用户cjd重新赋予权限
- 2、mysqlA开启对B的同步
- 3、mysqlB开启对A的同步
一、搭建前期说明
mysql的版本为5.7
搭建平台为centos7
服务启动为docker
搭建的两台mysql数据库名为mysqlA和mysqlB
mysqlA端口56612
mysqlB端口56613
二、mysql文件结构以及配置说明
1、mysqlA文件结构
/home/cjd/middleware/mysqlA
----/data 数据存储路径
----/log 日志存储路径
----mysqld.log
----mysql.err
----/conf
---- my.cnf mysql配置文件
----/mysql-files
----startMysqlA.sh 数据库A的启动脚本
2、mysqlB文件结构
mysqlB文件结构与A相似,此处不做赘述
3、mysqlA的配置文件my.cnf
Mysql数据库搭建互为主从mysqlA的配置文件
4、mysqlB的配置文件my.cnf
Mysql数据库搭建互为主从mysqlB的配置文件
5、启动mysqlA服务器脚本startMysqlA.sh
启动前说明:
1、需讲日志文件中的mysqld.log和mysql.err设置全员可读写
2、cjd用户作用从库同步用户
docker run -d \
--name mysqlA \
-p 56612:3306 \
-e MYSQL_ROOT_PASSWORD=Mysql@ms2016 \
-e MYSQL_USER=cjd \
-e MYSQL_PASSWORD=Mysql@ms2016 \
-v /etc/localtime:/etc/localtime \
-v /home/cjd/middleware/mysqlA/data:/var/lib/mysql \
-v /home/cjd/middleware/mysqlA/log:/var/log \
-v /home/cjd/middleware/mysqlA/conf:/etc/mysql \
-v /home/cjd/middleware/mysqlA/mysql-files:/var/lib/mysql-files \
--restart=always \
mysql:5.7
6、启动mysqlB服务器脚本startMysqlB.sh
启动前说明:
1、需讲日志文件中的mysqld.log和mysql.err设置全员可读写
2、cjd用户作用从库同步用户
docker run -d \
--name mysqlB \
-p 56613:3306 \
-e MYSQL_ROOT_PASSWORD=Mysql@ms2016 \
-e MYSQL_USER=cjd \
-e MYSQL_PASSWORD=Mysql@ms2016 \
-v /etc/localtime:/etc/localtime \
-v /home/cjd/middleware/mysqlB/data:/var/lib/mysql \
-v /home/cjd/middleware/mysqlB/log:/var/log \
-v /home/cjd/middleware/mysqlB/conf:/etc/mysql \
-v /home/cjd/middleware/mysqlB/mysql-files:/var/lib/mysql-files \
--restart=always \
mysql:5.7
7、查看服务启动情况
如图代表启动成功
三、设置主从同步
1、给同步用户cjd重新赋予权限
mysqlA和mysqlB做相同的操作
1、docker 登录mysql服务器
docker exec -it mysqlA mysql -uroot -p
2、重新赋予权限
grant all privileges ON *.* to 'cjd'@'%';
(如果使用的mysql8需要刷新权限)flush privilieges;
3、查看权限
show grants for 'slave_user'@'%';
2、mysqlA开启对B的同步
1、记录主库bin位置信息
在mysqlB的数据库中 show master status;
2、如果已经开启主从需先关闭后开启
stop slave;
change master to MASTER_HOST='192.168.180.127', MASTER_PORT=56613, MASTER_USER='cjd', MASTER_PASSWORD='Mysql@ms2016', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=400;
start slave;
3、查看主从同步状态
show slave status\G
最看到同步状态如图所示代表mysqlA已经开启对B的同步
3、mysqlB开启对A的同步
1、记录主库bin位置信息
在mysqlA的数据库中 show master status;
2、如果已经开启主从需先关闭后开启
stop slave;
change master to MASTER_HOST='192.168.180.127', MASTER_PORT=56612, MASTER_USER='cjd', MASTER_PASSWORD='Mysql@ms2016', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=400;
start slave;
3、查看主从同步状态
show slave status\G
成功的状态图与A相同
至此mysql互为主从已经搭建成功