mysql之主从同步_mysql之主从同步

bae27a8b75a22d4102408cc2eae25545.png

主服务器配置文件:[root@martin data]# vim /etc/my.cnf

[mysqld]

basedir = /usr/local/mysql

datadir = /mydata/mysql/data

port = 3306

server_id = 1   #主id

socket = /tmp/mysql.sock

log-bin=/mydata/mysql/log-bin/master-bin  #二进制日记

binlog_format=row #能够精确完成有着触发器、存储过程等代码场景中的复制;能完成几乎所有的复制功能;较少的CPU占用率;

无法判断执行了什么样的SQL语句;数据量可能略大;

innodb_file_per_table=ON #innodb数据与索引分离存储

#if slave exist

sync_binlog=1   #立即同步提交的事务

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES#添加数据同步账号

mysql> grant replication slave,replication client on *.* to ‘master‘@‘192.168.%.%‘ identified by ‘222222‘;

mysql> flush privileges;

从服务器配置文件:[root@lucia mysql]# vim /etc/my.cnf

[mysqld]

basedir = /usr/local/mysql

datadir = /mydata/mysql/data

port = 3306

socket = /tmp/mysql.sock

#log-bin=/mydata/mysql/log-bin/master-bin

binlog_format=row

innodb_file_per_table=ON

server_id = 2 #从id 区别于主

relay-log=/mydata/mysql/relay-bin/relay-bin

read_only=ON  #非管理员用户只能读

#safe but slow

sync_master_info = 1

sync_relay_log = 1

sync_relay_log_info = 1

slave-parallel-workers=2 #开启多进程复制

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

配置查看:[root@lucia mysql]# mkdir relay-bin

[root@lucia mysql]# chown -R mysql.mysql relay-bin/

mysql> show global variables like ‘%relay%‘;

+---------------------------+-------------------------------+

| Variable_name             | Value                         |

+---------------------------+-------------------------------+

| max_relay_log_size        | 0                             |

| relay_log                 | /mydata/mysql/relay-bin       |

| relay_log_basename        | /mydata/mysql/relay-bin       |

| relay_log_index           | /mydata/mysql/relay-bin.index |

| relay_log_info_file       | relay-log.info                |

| relay_log_info_repository | FILE                          |

| relay_log_purge           | ON                            |

| relay_log_recovery        | OFF                           |

| relay_log_space_limit     | 0                             |

| sync_relay_log            | 10000                         |

| sync_relay_log_info       | 10000                         |

+---------------------------+-------------------------------+

从服务器连接主服务器:mysql> change master to master_host=‘192.168.1.222‘,master_user=‘master‘,master_password=‘222222‘;mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State:

Master_Host: 192.168.1.222

Master_User: master

Master_Port: 3306

Connect_Retry: 60

Master_Log_File:

Read_Master_Log_Pos: 4

Relay_Log_File: relay-bin.000001

Relay_Log_Pos: 4

Relay_Master_Log_File:

Slave_IO_Running: No

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 0

Relay_Log_Space: 120

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 0

Master_UUID:

Master_Info_File: /mydata/mysql/data/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0mysql> start slave;

模拟两台数据不一致的主机进行同步:#主服务器

[root@martin ~]# mysqldump -A --flush-logs --master-data=2 -x -uroot -hlocalhost -p>all.sql

[root@martin ~]# scp -P6789 all.sql  root@lucia:~/

#从服务器从all.sql中查询日志信息

[root@lucia relay-bin]# mysql 

mysql> change master to master_host=‘192.168.1.222‘,master_user=‘master‘,master_password=‘222222‘,master_log_file=‘master-bin.000012‘,master_log_pos=120;

mysql> start slave;    #开启mysql> show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.222

Master_User: master

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: master-bin.000012

Read_Master_Log_Pos: 120

Relay_Log_File: relay-bin.000002

Relay_Log_Pos: 284

Relay_Master_Log_File: master-bin.000012

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB:

Replicate_Ignore_DB:

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 0

Last_Error:

Skip_Counter: 0

Exec_Master_Log_Pos: 120

Relay_Log_Space: 451

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: 0

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 0

Last_SQL_Error:

Replicate_Ignore_Server_Ids:

Master_Server_Id: 1

Master_UUID: 6d2a2a10-2198-11e6-aded-000c294b9b35

Master_Info_File: /mydata/mysql/data/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp:

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set:

Executed_Gtid_Set:

Auto_Position: 0

从服务器停止响应与重置:mysql> stop slave;

mysql> reset slave;

注意:服务器重启后,从服务器自动开启

优化:

半同步复制:(一旦某次等待超时,会自动降级为异步)

主服务器mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME ‘semisync_master.so‘;

mysql> SHOW GLOBAL VARIABLES LIKE ‘%semi%‘;

mysql> SET GLOBAL rpl_semi_sync_master_enabled=ON;

mysql> SET GLOBAL rpl_semi_sync_master_timeout=2000;

从服务器:mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME ‘semisync_slave.so‘;

mysql> SET GLOBAL rpl_semi_sync_slave_enabled=ON;

mysql> STOP SLAVE IO_THREAD; START SLAVE IO_THREAD;

在主服务器验正半同步复制是否生效:mysql> SHOW GLOBAL STATUS LIKE ‘%semi%‘;

是否延迟:(允许波动)mysql> show slave status\G

.......

Seconds_Behind_Master: 0    #时常

卸载:mysql>unstall PLUGIN (rpl_semi_sync_slave | rpl_semi_sync_master)

实验结果:

主服务器:mysql> select  * from t4;

+----+------+--------+

| id | data | expire |

+----+------+--------+

| 1  | 22   |      0 |

+----+------+--------+

1 row in set (0.00 sec)

mysql> insert into t4(id,data)values(2,33);

Query OK, 1 row affected (0.00 sec)

mysql> select  * from t4;

+----+------+--------+

| id | data | expire |

+----+------+--------+

| 1  | 22   |      0 |

| 2  | 33   |      0 |

+----+------+--------+

从服务器:mysql> select * from t4;

+----+------+--------+

| id | data | expire |

+----+------+--------+

| 1  | 22   |      0 |

+----+------+--------+

1 row in set (0.00 sec)

mysql> select * from t4;

+----+------+--------+

| id | data | expire |

+----+------+--------+

| 1  | 22   |      0 |

| 2  | 33   |      0 |

+----+------+--------+

2 rows in set (0.00 sec)

over

mysql之主从同步

标签:mysql主从同步 复制

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://9173436.blog.51cto.com/9163436/1783214

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值