mysql主从复制
我的环境是利用了两个数据库实例,关于数据库实例我的前几篇文章写了。下面这个只是参考作用,需要懂其原理才能理解下面配置,要不然会出错,出错可以私聊我。
1、打开主库bin-log log-bin = /data/3306/mysql-bin 2、确保server-id不一样 3、检查一下,grep是显示不出来的 [root@weiwei 3306]# egrep "log-bin|server-id" /data/3306/my.cnf [mysqld] log-bin = /data/3306/mysql-bin server-id = 1 4、查看log-bin是否开启 show variables like 'log_bin'; 5、建立用于从库复制的账号rep,在主库上授权 grant replication slave on *.* to 'rep'@'10.0.0.%' identified by 'oldboy123'; flush privileges; 6、在主库上做备份,下面是给主库加个读锁,不让用户写数据了,,,这个也可以不锁,这个是官方给出的方案,也可以在mysqldump的时候加上-x自动锁 flush tables with read lock; mysql5.1
flush table with read lock; mysql5.5
7、另开一个窗口,做备份,另外在备份之前查看一下文件和位置 mysql>show master status; 从此时的点开始备份,要记住,如果此时没有看这个,那么就在备份的时候加上master-data=1或者2,区别就是将来在change master to时要不要写文件和位置点,这个可以看上面的图 mysql>show master logs; mysqldump -uroot -p123 -S /data/3306/mysql.sock -A -B --events|gzip >/opt/rep.sql.gz 此处-A是所有数据,,-B是包含创库语句 8、解锁 unlock tables; 9、将主库备份出来的数据传至从库,然后导入从库 mysql -uroot -p123 -S /data/3307/mysql.sock </opt/rep.sql 10、登录从库,写入配置 CHANGE MASTER TO MASTER_HOST='10.0.0.7', MASTER_POST=3306, MASTER_USER='rep', MASTER_PASSWORD='123', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=333; 在从库的/data/3307的目录下会存再master.info,保存着登录主库的相关信息 11、在从库中开启同步 start slave; 查看两个线程是否工作 show slave status\G
上述第六点锁表的命令的时间,在不同的引擎的情况下,会受下面参数的控制,锁表时,如果超过设置时间不操作会自动解锁,所以此参数要尽量设置大点
interactive_timeout =60
wait_timeout=60
set gloable wait_timeout=28800……
退出数据库后重进,就发现改了。
可以查看超时时间 show variables like '%timeout%'
mysql主从复制原理要点 1、异步方式同步 2、逻辑同步模式,多种模式,默认是通过sql语句执行 3、主库通过记录binlog实现对从库的同步。binlog记录数据库的更新语句 4、主库1个io线程,从库由1个io线程和一个sql线程来完成的 5、从库关键文件master.info,relay-log,relay-info功能 6、如果从库还想级联从库,需要打开log-bin和 log-slave-updates 参数
生产环境快速配置mysql主从复制方案 1、安装好要配置从库的数据库,配置好log-bin和server-id参数。 2、无需配置主库的my.cnf文件,主库的log-bin和server-id参数默认就是配置好的。 3、登录主库增加用于从库连接主库同步的账户例如:rep,并授权replication slave同步的权限。 4、使用半夜mysqldump带--master-data=1备份的全备数据恢复到从库。 5、在从库执行change master to……语句,无需binlog文件及对应位置点。 6、从库开启同步开关,start slave。 7、从库show slave status\G,检查同步状态,并在主库进行更新测试。