js+下载服务器wordpress,上海正规seo公司,wordpress链接替换,义乌网站设计制作价格文章目录 一、前提二、修改my.cnf主1 10.255.131.9主2 10.255.131.10 三、配置主主3.1 配置主 10.255.131.93.2 配置从 10.255.131.103.3 配置主 10.255.131.103.4 配置从 10.255.131.9 四、验证五、同步问题排查以及恢复5.1 查看同步状态5.2 查看同步是否数据一致性#xff0… 文章目录 一、前提二、修改my.cnf主1 10.255.131.9主2 10.255.131.10 三、配置主主3.1 配置主 10.255.131.93.2 配置从 10.255.131.103.3 配置主 10.255.131.103.4 配置从 10.255.131.9 四、验证五、同步问题排查以及恢复5.1 查看同步状态5.2 查看同步是否数据一致性延迟多少5.3 过滤掉常见错误5.4 同步失败如何恢复 一、前提
两台机器均部署好了mysql
部署可参考之前的博客 Mysql 8.4.3LTS 的离线部署
二、修改my.cnf
主1 10.255.131.9
vim /etc/my.cnf
[mysqld] 中加入以下内容
# 配置server-id 每个MySQL实例的server-id都不能相同
server-id9
# MySQL的日志文件的名字
log-binmysql_master
# 作为从库时 更新操作是否写入日志 on写入 其他数据库以此数据库做主库时才能进行同步
log-slave-updateson
# 同步DML
binlog_format ROW
# 开启GTID
gtid-mode ON
enforce-gtid-consistency ON
log-slave-updates ON
# 多线程复制
slave_parallel_workers 4# MySQL系统库的数据不需要同步 我们这里写了3个 更加保险
# 同步数据时忽略一下数据库 但是必须在使用use db的情况下才会忽略如果没有使用use db 比如create user 数据还是会同步的
replicate-ignore-dbinformation_schema
replicate-ignore-dbmysql
replicate-ignore-dbperformance_schema
replicate-ignore-dbsys
# 使用通配符忽略MySQL系统库的表 这样在create user时也不会进行同步了
replicate_wild_ignore_tableinformation_schema.%
replicate_wild_ignore_tablemysql.%
replicate_wild_ignore_tableperformance_schema.%
replicate_wild_ignore_tablesys.%
# MySQL系统库的日志不计入binlog 这样更加保险了
binlog-ignore-dbinformation_schema
binlog-ignore-dbmysql
binlog-ignore-dbperformance_schema
binlog-ignore-dbsys主2 10.255.131.10
修改my.cnf, 只需要修改其中的两个地方,其他内容一样
# 配置server-id 每个MySQL实例的server-id都不能相同
server-id10
# MySQL的日志文件的名字
log-binmysql_slavemy.cnf文件修改完成后重启mysql
systemctl restart mysql
三、配置主主
主主模式就是配置两个主从。
10.255.131.9主-10.255.131.10从
10.255.131.10主-10.255.131.9从
3.1 配置主 10.255.131.9
先登录10.255.131.9(主1)的数据库依次执行如下命令 #创建备份的账号 使用MYSQL_NATIVE_PASSWORD的方式加密
create user repl_master% identified with mysql_native_password by master_ccdcsm;
# 对repl_master授予备份的权限
grant replication slave on *.* to repl_master%;
# 刷新权限
flush privileges;
3.2 配置从 10.255.131.10
登录到10.255.131.10主2 中执行如下命令
mysql CHANGE MASTER TO
MASTER_HOST10.255.131.10,
MASTER_USERrepl_master,
MASTER_PASSWORDmaster_ccdcsm,
MASTER_PORT3306,
MASTER_AUTO_POSITION 1;mysql START SLAVE;
mysql SHOW SLAVE STATUS\G;这样
10.255.131.9主1-10.255.131.10主2的主从就搭建好了。
然后我们再反过来搭建
10.255.131.10主2-10.255.131.9主1的主从。
3.3 配置主 10.255.131.10
登录10.255.131.10(主2)的数据库依次执行如下命令
#创建备份的账号 使用MYSQL_NATIVE_PASSWORD的方式加密
create user repl_slave% identified with mysql_native_password by slave_ccdcsm;
# 对repl_slave授予备份的权限
grant replication slave on *.* to repl_slave%;
# 刷新权限
flush privileges;
# 查看MySQL主节点的状态
show master status;binlog文件的名字mysql_master.000001和位置也就是830。
3.4 配置从 10.255.131.9
登录到10.255.131.9(主1)执行如下命令
mysql CHANGE MASTER TO MASTER_HOST10.255.131.9,MASTER_USERrepl_slave,MASTER_PASSWORDslave_ccdcsm,MASTER_PORT3306,MASTER_AUTO_POSITION 1;mysql START SLAVE;
mysql SHOW SLAVE STATUS\G;四、验证
由于上述的my.cnf中将创建用户创建表的行为给屏蔽同步了。
注释相关代码后 重启发现在10.255.131.9上执行的创建用户与表的动作
10.255.131.10上已经同步过去了。
此外创建分区并不会导致同步的报错以及异常
CALL P_ADD_TAB_PARTITION_THAT_VERY_DAY(‘MON_DATA_CUR’);
两台服务器均正常创建了今天的分区
五、同步问题排查以及恢复
5.1 查看同步状态
同步状态是否正常可通过sql查询
mysql show slave status\G;
以下两个属性均为yes说明同步状态正常
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如果有任何为No可以查询Last_SQL_Error上次同步失败的sql如何恢复请看5.4
5.2 查看同步是否数据一致性延迟多少
mysql show slave status\G;
Seconds_Behind_Master: 为0说明数据同步完成这个属性表示的是从库同步主库的延迟时间单位秒
5.3 过滤掉常见错误
常见的有1032错误码 binlog中变更的那行在表中不存在导致主从失败 该错误很常见可屏蔽
my.cnf可配置slave-skip-errors1032
重启mysql就可以跳过日志中的1032错误码
也可以配置
# 跳过所有错误 slave-skip-errorsall
5.4 同步失败如何恢复
如果主库有个错误的sql执行导致报错或者主从库数据结构不一致等原因导致同步报错
这种情况如何恢复同步呢
基本上就这三步
mysql stop slave;mysql reset slave;mysql start slave;如果起不来可能是binlog记录的位置不一致。这时候reset slave下再重启
复杂的错误导致数据不一致的情况
全量同步
可以采取删除从库数据库主库锁库只读。然后全量备份再恢复到从库中再建立主从同步的链接以此来恢复。
锁表FLUSH TABLES WITH READ LOCK;
解锁UNLOCK TABLES;
跳过部分错误(没啥用)
mysqlstop slave ;
~~mysqlSET GLOBAL SQL_SLAVE_SKIP_COUNTER 1;~~跳过一个事务
mysqlstart slave;
对于复杂的报错无法解决的时候如果同步并恢复主从呢
在此举例主从主主的模式一样就是操作两遍。
首先从数据库停止同步并删除主从连接配置信息
mysql stop slave;
mysql reset slave all;
主数据库中删除binlog重新记录binlog
mysql reset master;
借助工具手动的同步两个数据库主数据库数据同步到从数据库中NavicatSQLyog 均可好用。
从数据库上建立连接GTID
mysql CHANGE MASTER TO MASTER_HOST10.255.131.9,MASTER_USERrepl_master,MASTER_PASSWORDmaster_ccdcsm,MASTER_PORT3306,MASTER_AUTO_POSITION 1;启动从库同步
mysql start slave;
这样就可以恢复主从的同步了。
这是没法通过 reset slave; 恢复同步时候的实用的解决方式要注意mysql同步之前最好做下必要的备份防止数据丢失。
总之数据库的同步是一个复杂的情况如果生产上发现同步异常数据库数据不一致等情况可以找专业DBA。
O
MASTER_HOST‘10.255.131.9’,
MASTER_USER‘repl_master’,
MASTER_PASSWORD‘master_ccdcsm’,
MASTER_PORT3306,
MASTER_AUTO_POSITION 1;
启动从库同步mysql start slave;这样就可以恢复主从的同步了。这是没法通过 reset slave; 恢复同步时候的实用的解决方式要注意mysql同步之前最好做下必要的备份防止数据丢失。总之数据库的同步是一个复杂的情况如果生产上发现同步异常数据库数据不一致等情况可以找专业DBA。