赞
踩
本地虚拟机网络192.168.136.150
数据库:mariadb最新版lastest
mysql服务器 | 端口 | 定位 | 关系 |
---|---|---|---|
mysql_master1 | 192.168.136.150.3311 | 主节点1 | 主:master2; 从:slave1 |
mysql_master2 | 192.168.136.150.3321 | 主节点2 | 主:master1; 从:slave2 |
mysql_slave1 | 192.168.136.150.3312 | 从节点1 | 主:master1; 从:null |
mysql_slave2 | 192.168.136.150.3322 | 从节点2 | 主:master2; 从:null |
起环境命令:
docker run -p 3311:3306 --name mysql_m1
-v /docker/mysql_m1/conf:/etc/mysql/conf.d
-v /docker/mysql_m1/logs:/logs
-v /docker/mysql_m1/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root -d mariadb
mysql_master1配置
中conf中my.cnf配置文件
[mysqld] # 服务器唯一标识 server-id=1 # 二进制日志文件名 log-bin=mysql-bin # 互为主从需要加入这一行 log-slave-updates #可不加 # 需要备份的数据库,多个数据库用 , 分隔 binlog-do-db=piumnl # 需要复制的数据库,多个数据库用 , 分隔 replicate-do-db=piumnl # 中继日志文件名 relay_log=mysqld-relay-bin # 手动启动同步服务,避免突然宕机导致的数据日志不同步 skip-slave-start=ON # 禁用符号链接,防止安全风险,可不加 symbolic-links=0
mysql_master2配置
中conf中my.cnf配置文件
[mysqld]
server-id=2
log-bin=mysql-bin
log-slave-updates
mysql_slave1配置
中conf中my.cnf配置文件
[mysqld]
server-id=3
mysql_slave2配置
中conf中my.cnf配置文件
[mysqld]
server-id=4
mysql_master1 & mysql_master2 都要创建备份用户:
USE mysql;
CREATE USER 'repl'@'%' IDENTIFIED BY 'root'; # 创建一个账户
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; # 授予该账户对任意数据库任意表的主从备份权限
flush privileges; #更新权限
SELECT USER, HOST FROM mysql.user; #查询用户权限情况
能看到出现repl账户即创建成功
开启从服务|开启备份
mysql_master1
#模板为
change master to master_host=<master_hostname>,
master_user=<repl_username>,
master_port=<master_port>,
master_password=<repl_password>,
master_log_file='mysql-log.000003',
master_log_pos=154;
根据在主服务上查询的信息填写
通过SHOW MASTER STATUS; 命令获取
比如:
需要对mysql_master2开启,MASTER_PORT为3312
CHANGE MASTER TO
MASTER_HOST='192.168.136.150', MASTER_PORT=3312,
MASTER_USER="repl",MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=516;
START SLAVE #启动从服务
STOP SLAVE #停止从服务
查看结果
show slave status;
# 查看最重要的两项,两个都必须为 Yes ,有一个为 No 都要去查看错误日志文件,看看什么地方存在问题
# Slave_IO_Running: Yes
# Slave_SQL_Running: Yes
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。