mysql复制

Mysql复制基础

主从端

Msql复制基于BinLog日志

三种日志格式

  1. statement Binlog中存储SQL语句,主从延时大
  2. row 存储event数据,主从延时小
  3. mixed 介于row和statement之间。

Mysql复制可以是对整个实例进行复制,也可以对实例中的某个表进行复制。

Master端

–binlog-do-db

–binlog-ignore-db

slave端

–replicate-do-db

–replicate-ignore-db

存在的两种复制类型

基于二进制日志的复制

基于GTID(全局事务标识符)完成基于事务的复制

Mysql支持半同步机制

如何实现基于日志点的复制

  1. 在Master端建立复制用户
  2. 备份Master端的数据,并在Slave端恢复yo
  3. 使用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.这样即完成了配置

你可能感兴趣的:(mysql复制)