有哪些网站是做采购招标的,网站备案时核验单,网络营销的含义是什么,wordpress页头登录文章目录 前言环境配置主库从库 STATEMENTbinloggtidlog-errorDistSQL总结 前言
mysql 主从复制使用感受#xff0c;遇到一些问题的整理#xff0c;也总结了一些排查问题技巧。 环境
mysql5.7
配置
附#xff1a;千万级数据快速插入配置可以参考#xff1a;mysql千万数… 文章目录 前言环境配置主库从库 STATEMENTbinloggtidlog-errorDistSQL总结 前言
mysql 主从复制使用感受遇到一些问题的整理也总结了一些排查问题技巧。 环境
mysql5.7
配置
附千万级数据快速插入配置可以参考mysql千万数据快速插入-实战
主库
主要配置
server_id16523
log_bin/laday/mysql/logbin/log_bin
# 这里为啥使用 STATEMENT 后面细讲
binlog_formatSTATEMENT
# 日志过期时间天数
expire_logs_days7
log-error/laday/mysql/log/err.log
# 是否开启慢查询日志收集, 1为启用, 0为禁用
slow_query_log1
# 慢查询日志文件
slow_query_log_file/laday/mysql/log/slow.log
# 记录慢查询超时时间, 秒
long_query_time20
tmpdir/laday/mysql_tmpdir# 开启 gtid, 自动寻找同步点
gtid_modeON
enforce_gtid_consistencyON# 数据库同步白名单库级
binlog-do-dbladay# 数据库同步黑名单
binlog-ignore-dbmysql
binlog-ignore-dbinformation_schema
binlog-ignore-dbperformance_schema
binlog-ignore-dbsys
从库
主要配置
# mysql 启动时是否忽略启动slave, ONmysql 启动后slave不会自动启动需要手动启动。
skip_slave_startON
# 忽略同步过程出现所有错误根据实际情况制定
slave-skip-errorsall
# 开启 gtid
gtid_modeON
enforce_gtid_consistencyON# 同步表白名单 表级
replicate_wild_do_tableladay.table_1%
replicate_wild_do_tableladay.table_2%# 同步表黑名单
replicate_wild_ignore_tableladay.%
replicate_wild_ignore_tablemysql.%
replicate_wild_ignore_tableinformation_schema.%
replicate_wild_ignore_tableperformance_schema.%
replicate_wild_ignore_tablesys.%
STATEMENT
binlog_formatSTATEMENT最开始是使用 ROW 的但是后面发现从库同步任务一直卡发现是主库使用了 DELETE 语句删除一个千万级的大表导致从库是一行一行删除也就卡si了。 后面换成MIXED 还随手测试了一下 delete from 【表名】 看着正常。后面还是卡了 原来主库有一个语句 delete from 【表名】 where … sysdate() … 删除大表导致从库又卡了。罪魁祸首-sysdate
最终我决定使用 STATEMENT
binlog
有时候主从复制会有延迟的情况可以通过 show slave status 查看此刻进度包括 pos 和 file。
show slave status然后带入 pos 和 file 在主库执行如下语句 使用SQL查询看不出执行时间可以使用 mysqlbinlog在mysql 安装目录里面) 命令
./bin/mysqlbinlog --start-datetime2023-11-02 20:00:00 --stop-datetime2023-11-02 23:00:00 ./logbin/log_bin.000613 /home/xyz/temp001.sql./bin/mysqlbinlog --start-position314712945 --stop-position315156780 ./logbin/log_bin.000973 /home/xyz/temp002.sqlgtid
开启 gtid方便从库自动寻找续点。 初始化如下
CHANGE MASTER TO MASTER_HOST10.111.xxx.xxx,MASTER_PORT3308,MASTER_USER账号, MASTER_PASSWORD密码,master_auto_position1;也可以手动定义同步点如下
CHANGE MASTER TO MASTER_HOST10.111.xxx.xxx,MASTER_PORT3308,MASTER_USER账号, MASTER_PASSWORD密码,master_auto_position0,
master_log_filelog_bin.000694,master_log_pos194;log-error
对于很多问题错误日志会有很多信息提示不要错过。
DistSQL
DistSQLDistributed SQL是 Apache ShardingSphere 特有的操作语言读写分离用到在此顺便记录一下。 常用语句
-- 查询存储单元信息
SHOW STORAGE UNITS;-- 查询所有分片规则
SHOW SHARDING TABLE RULES FROM pddyjc;
-- 查询指定逻辑表的分片规则
SHOW SHARDING TABLE RULE 表 FROM 库;
-- 删除指定逻辑表的分片规则
DROP SHARDING TABLE RULE 表;-- 查询指定数据库中具有广播规则的表
SHOW BROADCAST TABLE RULES FROM 库;
-- 删除指定数据库中具有广播规则的表
DROP BROADCAST TABLE RULE 表 FROM 库;
-- 将 test_br 添加到广播规则中
CREATE BROADCAST TABLE RULE test_br ;-- 设置单表默认存储单元
SET DEFAULT single table storage unit ds_0;-- 创建规则分库
-- test_a 以 sjsj 字段分库。
-- allow-range-query-with-inline-shardingtrue , 支持 between 等区间关键字跨库查询。
CREATE SHARDING TABLE RULE test_a(
DATANODES(ds_${0..1}.test_a),
DATABASE_STRATEGY(TYPEstandard,SHARDING_COLUMNsjsj,
SHARDING_ALGORITHM(TYPE(NAMEinline,PROPERTIES(algorithm-expressionds_${ sjsj 2023-10?0:1 },allow-range-query-with-inline-shardingtrue))))
);-- 创建规则分表
-- testtable 以 zzbm 字段分表。
ALTER SHARDING TABLE RULE testtable(
DATANODES(ds_0.testtable_${[0501,0502,0503,0504,0505,0506,0507,0508,0509,0510,0511,0512,0513,0514,0515,0516,0522,0581]}),
TABLE_STRATEGY(TYPEstandard,SHARDING_COLUMNzzbm,
SHARDING_ALGORITHM(TYPE(NAMEinline,PROPERTIES(algorithm-expressioniamskh_ydkh_${ zzbm }))))
);-- 同时有分库分表
-- 伪语法
CREATE SHARDING TABLE RULE t_order_item (
DATANODES(ds_${0..1}.t_order_item_${0..1}),
DATABASE_STRATEGY(TYPEstandard,SHARDING_COLUMNuser_id,SHARDING_
ALGORITHM(TYPE(NAMEinline,PROPERTIES(algorithm-expressionds_${user_id % 2}
)))),
TABLE_STRATEGY(TYPEstandard,SHARDING_COLUMNorder_id,SHARDING_
ALGORITHM(TYPE(NAMEinline,PROPERTIES(algorithm-expressiont_order_item_$
{order_id % 2}))))
);-- 导出当前配置信息
EXPORT DATABASE CONFIGURATION;总结
实践是检验真理的唯一标准 —————— 但行好事莫问前程你若盛开蝴蝶自来