@wxf
2018-04-06T16:30:45.000000Z
字数 1490
阅读 810
【实战课】MySql性能管理及架构设计
MySql的复制功能是基于主库的二进制日志,然后在备库上重放这些日志方式实现的。所以MySql的复制功能是异步完成的。
【相关推荐】
MySQL主从复制原理---浅谈
复制解决了什么问题
二级制日志
MySql日志分为服务层日志和引擎层日志
其中二进制日志记录了所有对MySql数据库的修改事件,包括增删改查事件和对表结构的修改事件。
二进制日志包含三种日志格式:段日志格式(statement)、行日志格式(row)、混合日志格式(mixed)。
# 建议
binlog_format=mixed # (混合日志格式)
OR
binlog_format=row # (行日志格式)
binlog_row_image=minimal
# 设置方式
show variables like 'binlog_format'; # 查看二进制日志格式
set session binlog_format=row; # 设置二进制日志格式为行日志格式
show binary logs; # 查看log日志文件
flush logs; # 刷新log日志文件
mysqlbinlog mysql-bin.000002 # 查看名为‘mysql-bin.000002’的二进制文件
MySql开启二进制日志
在MySql中默认是不开启二进制日志的。其开启方式如下:
在/etc/my.cnf文件中[mysqld]下添加:
server-id=1
log-bin=binlog
log-bin-index=binlog.index
重启MySql即可查看二进制日志开启状态
# 查看命令
SHOW VARIABLES LIKE 'log_bin'
二进制日志格式对复制的影响
基于SQL语句的复制(SBR)- 不推荐使用
二进制的日志格式为段格式,即statement。
基于行的复制(RBR)
二进制的日志格式为行格式,即row。该类型的数据库复制要求主从数据库的表结构必须相同。并且无法再从数据库上单独执行触发器。
在主数据库服务器上建立复制账号
# 创建repl用户
CREATE USER 'repl' @ 'IP段' identified by 'Password';
# 为repl用户授权
GRANT REPLICATION SLAVE ON *.* TO 'repl' @ 'IP段';
配置主数据库服务器
bin_log = mysql-bin
server-id = 1
配置从数据库服务器
bin_log = mysql-bin
server-id = 2
relay_log = mysql-relay-bin
log_slave_update = on[可选]
read_only = on [可选]
初始化从服务器数据
# 数据库备份的两种方式
mysqldump --master-data=2-single-transaction
xtrabackup --slave=info
启动复制链路
CHANGE MASTER TO
MASTER_HOST='master_host_ip',
MASTER_USER='repl',
MASTER_PASSWORD='Password',
MASTER_LOG_FILE='mysql_log_file_name',
MASTER_LOG_POS=4;