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,检查同步状态,并在主库进行更新测试。

  

posted @ 2017-07-24 22:52  JvvYou  阅读(176)  评论(0编辑  收藏  举报