mysql数据库互为主从配置方法分享
2023-06-13 09:14:33 时间
mysql主从配置小记:
共有四台机器:A(10.1.10.28),B(10.1.10.29),C(10.1.10.30),D(10.1.10.31)。
配置后结果:A-C互为主从,B为A的slave,D为C的slave。
0)准备工作
在四台机器上面安装好mysql后,创建用于同步的账号。
添加账户:
复制代码代码如下:
共有四台机器:A(10.1.10.28),B(10.1.10.29),C(10.1.10.30),D(10.1.10.31)。
配置后结果:A-C互为主从,B为A的slave,D为C的slave。
0)准备工作
在四台机器上面安装好mysql后,创建用于同步的账号。
添加账户:
INSERTINTOuser(Host,User,Password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)VALUES("%","test",password("test"),"Y","Y","Y","Y","Y","Y");
刷新数据库:
FLUSHPRIVILEGES;
1)配置A-C互为主从
修改A配置文件为:
server-id=1
replicate-do-db=test
replicate-do-db=test_admin
log-bin=mysql-bin
log-slave-updates
replicate-wild-do-table=test.%
replicate-wild-do-table=test_admin.%
binlog-ignore-db=mysql
slave-skip-errors=all
修改C配置文件为:
server-id=3
binlog-do-db=test
binlog-do-db=test_admin
log-bin=mysql-bin
log-slave-updates
replicate-wild-do-table=test.%
replicate-wild-do-table=test_admin.%
binlog-ignore-db=mysql
slave-skip-errors=all
重启mysql是配置生效
将A设置为主:
停止同步:
slavestop;
清空服务器master日志:
resetmaster;
授权同步账号:
GRANTREPLICATIONSLAVEON*.*TO"test"@"%"IDENTIFIEDBY"test";
刷新授权:
flushprivileges;
锁定数据库:
flushtableswithreadlock;
将C设置为从:
停止同步:
slavestop;
配置同步信息:
CHANGEMASTERTOMASTER_HOST="10.1.10.28",MASTER_USER="test",MASTER_PASSWORD="test",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107;
将C设置为主:
停止同步:
slavestop;
清空服务器master日志:
resetmaster;
授权同步账号:
GRANTREPLICATIONSLAVEON*.*TO"test"@"%"IDENTIFIEDBY"test";
刷新授权:
flushprivileges;
锁定数据库:
flushtableswithreadlock;
将A设置为从:
停止同步:
slavestop;
配置同步信息:
CHANGEMASTERTOMASTER_HOST="10.1.10.30",MASTER_USER="test",MASTER_PASSWORD="test",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107;
2)将B设置为A的从
server-id=2
replicate-do-db=test
replicate-do-db=test_admin
log-bin=mysql-bin
log-slave-updates
replicate-wild-do-table=test.%
replicate-wild-do-table=test_admin.%
binlog-ignore-db=mysql
slave-skip-errors=all
重启mysql服务
停止同步:
slavestop;
配置同步信息:
CHANGEMASTERTOMASTER_HOST="10.1.10.28",MASTER_USER="test",MASTER_PASSWORD="test",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107;
启动同步:
slavestart;
3)将D设置为C的从
server-id=4
replicate-do-db=test
replicate-do-db=test_admin
log-bin=mysql-bin
log-slave-updates
replicate-wild-do-table=test.%
replicate-wild-do-table=test_admin.%
binlog-ignore-db=mysql
slave-skip-errors=all
重启mysql服务
停止同步:
slavestop;
配置同步信息:
CHANGEMASTERTOMASTER_HOST="10.1.10.30",MASTER_USER="test",MASTER_PASSWORD="test",MASTER_LOG_FILE="mysql-bin.000001",MASTER_LOG_POS=107;
启动同步:
slavestart;
完成之后可以创建添加数据测试一下是否可以。
下面是常见错误处理:
1)
changemaster导致的:
Last_IO_Error:errorconnectingtomaster"repl1@IP:3306"-retry-time:60retries
2)
在没有解锁的情况下停止slave进程:
mysql>stopslave;
ERROR1192(HY000):Can"texecutethegivencommandbecauseyouhaveactivelockedtablesoranactivetransaction
3)
changemaster语法错误,落下逗号
mysql>changemasterto
->master_host="IP"
->master_user="USER",
->master_password="PASSWD",
->master_log_file="mysql-bin.000002",
->master_log_pos=106;
ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear"master_user="USER",
master_password="PASSWD",
master_log_file="mysql-bin.000002"atline3
4)
在没有停止slave进程的情况下changemaster
mysql>changemastertomaster_host=‘IP",master_user="USER",master_password="PASSWD",master_log_file="mysql-bin.000001",master_log_pos=106;
ERROR1198(HY000):Thisoperationcannotbeperformedwitharunningslave;runSTOPSLAVEfirst
5)
AB的server-id相同:
Last_IO_Error:Fatalerror:TheslaveI/OthreadstopsbecausemasterandslavehaveequalMySQLserverids;
theseidsmustbedifferentforreplicationtowork(orthe--replicate-same-server-idoptionmustbeusedon
slavebutthisdoesnotalwaysmakesense;pleasecheckthemanualbeforeusingit).
查看server-id
mysql>showvariableslike"server_id";
手动修改server-id
mysql>setglobalserver_id=2;#此处的数值和my.cnf里设置的一样就行
mysql>slavestart;
6)changemaster之后,查看slave的状态,发现slave_IO_running为NO
相关文章
- MySQL性能优化:让数据库运行更快!(mysql优化)
- MySQL 数据库文件存储路径指南(mysql数据存放路径)
- MySQL 监控:跟踪数据库性能和可用性(mysql监听)
- MySQL数据库:深度研习(mysql数据库深入学习)
- MySQL数据库的分区与子分区策略(mysql分区子分区)
- MySQL数据库窗口:轻松操作界面(mysql打开界面)
- MySQL 可以支持多少个数据库?(mysql多少个数据库)
- 探秘道森先生的 MySQL 数据库技能(道森mysql)
- 如何解决MySQL数据库中出现的乱码问题?(mysql数据库乱码问题)
- MySQL数据表设计:高效实践指南(mysql数据表设计案例)
- 创建MySQL数据库:开启智能计算之旅(创建mysql数据库)
- MySQL数据库连接的优雅配置方式(mysql数据库连接配置)
- C与MySQL搭配实现高性能程序开发(c mysql 高性能)
- MySQL中快速查找的C编写的查询语句(c mysql查找语句)
- 如何利用MySQL慢查询日志提高数据库性能(mysql个慢查询日志)
- MySQL数据存储与个人信息保护措施重要性分析(mysql个人信息保护)
- 命令行连接外网MySQL数据库流程与指南(cmd连接外网mysql)
- MySQL数据库批处理操作优化大作战(bat mysql数据库)
- CMD命令行安装MySQL数据库驱动程序(cmd安装mysql驱动)
- MySQL数据库三大范式简介(mysql三大范式简答)
- Mysql实现两数相加简单易行(mysql 两数相加)
- MySQL 不缓存查询结果优化数据库查询速度的方法(mysql不缓存查询结果)