您的位置:首页 > 数据库 > MySQL

mysql主从复制原理和注意事项

2017-05-09 17:38 351 查看
mysql主从复制大体分3个步骤:

在主库上把更新的数据写入到二进制日志binglog文件里面;
备库把主库的二进制日志复制到自己的relay_log中;
备库读取relay_log并将里面的数据重放到数据库。

上述步骤在主从之间涉及到3个线程,a:主库上面的数据写入binglog线程,b:从库上面启动的I/O数据同步线程,该线程在主库上启动一个特殊的二进制转储线程,去读取binglog文件,并把数据发送给I/O线程保存到relay_log,c:从库的sql线程读取relay_log并写入数据库

创建同步复制帐号:该帐号需要下列权限

mysql>grant replication slave,replication client on *.* to rep@'172.16.0.%'  identified by 'password';

复制帐号的权限其实只需要replication slave权限,replication client 是为了复制帐号的监控和管理需要

配置主库和从库配置文件,在主库修改my.cnf文件的下列选项

log_bin = /Data/mysql/3306/data/mysql  #开启binglog文件记录

server_id  = 1  #必须明确指明server_id,而且不容许复制环境有重复的server_id

relay_log = /Data/mysql/3306/data/mysql-relay-bin #开启relay_log并指定位置,该选项有默认值,也可不加

log_slave_updates = 1 #写relay-log的时候也写到bin-log,主要用在M-M-S环境,这里也可以不启用

     备注:不要在配置文件my.cnf里面设置master_host或master_port这些老的选项,会导致一些问题

启动复制:mysql>change master to master_host = '172.16.0.11',master_user='rep',master_password='password',master_log_file='mysql-bin.000001',master_log_pos=0;

    mysql>start slave;

    mysql>show slave status\G;

下面给出一些推荐的复制配置

主库上二进制日志最重要的选项sync_binlog=1 ,开启该选项,mysql每次在事务提交前会把二进制日志同步到磁盘,保证服务器崩溃时,不会丢失事件。它只作用于binglog,而不是relay_log
如使用innoDB选项,则推荐下列选项:

innodb_flush_log_at_trx_commit#flush
every log write

innodb_support_xa =1 
#mysql 5.0 or newer only  (innodb_safe_binglog#mysql 4.0 only)

skip_slave_start #选项阻止备库奔溃重启后自动启动复制

read_only #选项阻止大部分用户修改非临时表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: