目录
零、三高介绍及手段
1、
一、复制
1、复制类型和原理
传送原理:binlog传送,即Master dump_thread发送binlog,Slave的 io_thread 接收binglog并保存为relay log,Slave的 sql_thread 读取并重放 relay log
主库等binlog传送到从库变为relay log后,再commit事务。只关心binlog的传送,不关心relay log的执行。所以叫半同步
主库或从库执行sql的时候需要达成“共识”,都允许或大部分允许才能执行。同意执行之后再复制binlog,重放relay log。组复制是强一致性的。
2、主从复制配置实战
1.主备都打开binlog,然后重启mysqld进程
2.因为主从复制只是复制的增量,所以先要复制主库数据(备份+还原)。过程是:
主 | 备 |
---|---|
flush tables with read lock 先把主库上全局读锁 | x |
show master status \g 查看当前写到哪一个binlog及位置,比如12号binlog,194位置,\g是列和值竖过来看 | x |
mysqldump -uroot -p123456 --all-databases --master-data > dump.sql 把数据都dump下来。 | x |
scp dump.sql root@192.168.2.2:/root/dump.sql 通过scp将备份文件传到备库 | x |
unlock tables | x |
x | 备库也开只读 |
x | source /root/dump.sql 还原备份 |
x | reset slave 取消设置为其他从库 |
x | change master to MASTER_HOST=‘192.168.2.1’, MASTER_USER=‘root’, MASTER_LOG_FILE=‘mysql-bin.00012’, MASTER_LOG_POS=194; |
x | start slave |
默认是异步的,如果想配半同步的则添加两个半同步插件。配置如下
3、省略指定主从复制开始binlog 文件
4、binlog格式对复制的影响
row格式缺点是需要具体记录行变化,占用内存大。但因为记录具体行变化,查错方便,是最多使用的。