mysql使用心得(二)----主从复制 主数据库 建立账户,供slave同步使用 grant replication slave on *.* to 'test'@'192.168.56.3' identified by 'test'; mysql show master status; +------------------+----------+--------------+------------------+ | fil
mysql使用心得(二)----主从复制
主数据库
建立账户,供slave同步使用
grant replication slave on *.* to 'test'@'192.168.56.3' identified by 'test';
mysql> show master status;
+------------------+----------+--------------+------------------+
| file | position | binlog_do_db | binlog_ignore_db |
+------------------+----------+--------------+------------------+
| mysql-bin.000005 | 261 | | |
+------------------+----------+--------------+------------------+
记录下 file 及 position 的值,在后面进行从服务器操作的时候需要用到。
从数据库
执行同步sql语句,地址为主数据库地址,和主数据库上的用户名和密码
change master to
master_host='192.168.56.2',
master_user='test',
master_password='test',
master_log_file='mysql-bin.000008',
master_log_pos=107;
正确执行后启动slave同步进程
start slave;
主从同步检查
mysql> show slave status\g
==============================================
*************************** 1. row ***************************
slave_io_state: waiting for master to send event
master_host: 192.168.56.2
master_user: test
master_port: 3306
connect_retry: 60
master_log_file: mysql-bin.000008
read_master_log_pos: 258
relay_log_file: slave2-relay-bin.000003
relay_log_pos: 404
relay_master_log_file: mysql-bin.000008
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: 258
relay_log_space: 561
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
==============================================
其中slave_io_running 与 slave_sql_running 的值都必须为yes,才表明状态正常。
【参考资料】
mysql实战高级教程
http://zhumeng8337797.blog.163.com/blog/static/100768914201191385538506/
mysql5.6主从复制
http://blog.csdn.net/stuartjing/article/details/9719701
mysql数据丢失讨论
http://hatemysql.com/tag/sync_binlog/
gtid
http://www.tuicool.com/articles/njqqju
http://mysqllover.com/?p=87
【注意】
mysql5.6如果直接拷贝安装,需要手动删除data_dir下的auto.cnf文件
【其他配置】
在线执行主从配置
flush tables with read lock;
unlock tables;
在从库数据文件夹下,有个master.info文件,是从机器上特有的。
重置从库:用于让从属服务器忘记其在主服务器的二进制日志中的复制位置, 它会删除master.info和relay-log.info文件,以及所有的中继日志,并启动一个新的中继日志,当你不需要主从的时候可以在从上执行这个操作。
reset slave;
重新配置主库
reset master;
查看复制日志
show binlog events in 'mysql-bin.000004' \g;
如果是主主配置,需要注意配置
[mysqld]
# 步进值
auto_increment_increment=2
# 起始偏移量
auto_increment_offset=1
# 使从服务器把复制的事件记录到自己的二进制日志中
log_slave_updates=1
自动删除binlog
设置自动清理mysql binlog日志,配置my.cnf:
expire_logs_days = 10