Mysql复制基础
主从端
Msql复制基于BinLog日志
三种日志格式
- statement Binlog中存储SQL语句,主从延时大
- row 存储event数据,主从延时小
- mixed 介于row和statement之间。
Mysql复制可以是对整个实例进行复制,也可以对实例中的某个表进行复制。
Master端
–binlog-do-db
–binlog-ignore-db
slave端
–replicate-do-db
–replicate-ignore-db
等
存在的两种复制类型
基于二进制日志的复制
基于GTID(全局事务标识符)完成基于事务的复制
Mysql支持半同步机制
如何实现基于日志点的复制
- 在Master端建立复制用户
- 备份Master端的数据,并在Slave端恢复yo
- 使用Change master命令配置复制
具体配置
1.用户的授权
select user,host from mysql.user;
查看所有用户
create user 'user'@'host' identified by 'password';
2.数据备份导出
mysqldump --single-transaction --master-data=2 --triggers --routines --all-databases -uroot -p> all.sql;
然后将sql文件拷贝到slave端。
slave端:
mysql -uroot -p < all.sql
导出数据
3.slave端设置
change master to master_host = ‘host’,
master_user=’user’,
master_password=’password’,
master_log_file=’mysql_bin.000001’,
master_log_pos=100;
注意master_log_file,master_log_pos=100在all.sql中可以找到
,填写对应的。
start slave;
启动slave
show slave;
查看slave状态,Slave_IO_Running与Slave_SQL_Running状态都为YES,即完成了master端与slave端的复制,master端的操作同样也会影响到slave端。
若状态部位YES 需要关闭主从端的防火墙。
/etc/init.d/iptables stop
然后再主从my.cnf配置文件的[mysqld]下面加上server_id.这样即完成了配置