设为首页 收藏本站
查看: 1082|回复: 0

[经验分享] mysql主从库复制说明

[复制链接]

尚未签到

发表于 2016-9-11 12:57:22 | 显示全部楼层 |阅读模式
主服务器:CentOS 5.4 Mysql 5.5.3 -m3 源码 IP:192.168.1.22
从服务器:CentOS 5.4 Mysql 5.5.3 -m3 源码 IP:192.168.1.33
 
配置:
一、主服务器
1.1、创建一个复制用户,具有replication slave 权限。



  • mysql>grant replication slave on *.* to ‘slave001’@’192.168.1.22′ identified by ‘slave001’; 

  1.2、编辑my.cnf文件
  vi /data0/mysql/3306/my.cnf
  添加
  server-id=1
  并开启log-bin二进制日志文件
  log-bin=mysql-bin
  1.3、启动mysql数据库


  • /data0/mysql/3306/mysql start

  1.4、设置读锁


  • mysql>flush tables with read lock; 
  1.5、得到binlog日志文件名和偏移量


  • mysql>show master status;  
  • +——————+———-+————–+——————+  
  • | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  • +——————+———-+————–+——————+  
  • | mysql-bin.0000010 | 106| | |  
  • +——————+———-+————–+——————+ 
  1.6、备份要同步的数据库


  • mysqldump test1 > test1.sql 
  1.7、解锁


  • mysql>unlock tables; 
  二、从服务器
  2.1、编辑my.cnf文件
  vi /data0/mysql/3306/my.cnf
  添加
  server-id=2
  注:需要把默认的server-id=1去掉
  不要尝试把master配置属性写在my.cnf 中,5.1.7以后,mysql已经不支持这样做了
  2.2、启动从数据库



  • /data0/mysql/3306/mysql start 

  2.3、对从数据库进行相应设置


  • mysql> change master to  

  • -> master_host='192.168.1.22', 


  • -> master_user='slave001',


  • -> master_password='slave001', 


  • -> master_log_file='mysql-bin.0000010', 


  • -> master_log_pos=106; 
  2.4、启动从服务器slave线程


  • mysql>start slave; 
  执行show processlist命令显示以下进程:


  • mysql>show processlist\G  
  •  
  • *************************** 2. row ***************************  
  • Id: 2  
  • User: system user  
  • Host:  
  • db: NULL  
  • Command: Connect  
  • Time: 2579  
  • State: Has read all relay log; waiting for the slave I/O thread to update it 
  Info: NULL表示slave已经连接上master,开始接受并执行日志
  2.5、查看slave线程状态


  • mysql>show slave status;  
  • *************************** 1. row ***************************  
  • Slave_IO_State: Waiting for master to send event  
  • Master_Host: 192.168.1.22  
  • Master_User: repl  
  • Master_Port: 3306  
  • Connect_Retry: 60  
  • Master_Log_File: mysql-bin.0000010  
  • Read_Master_Log_Pos: 106  
  • Relay_Log_File: centos-relay-bin.000002  
  • Relay_Log_Pos: 529  
  • Relay_Master_Log_File: mysql-bin.0000010  
  • 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: 106  
  • Relay_Log_Space: 830  
  • 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:  
  • 1 row in set (0.00 sec) 
  验证是否配置正确
  在从服务器上执行


  • mysql> show slave status\G

  • Waiting for master to send event  
  • Slave_IO_Running: Yes  
  • Slave_SQL_Running: Yes 
  如以上二行同时为Yes 说明配置成功
  PS:show slave status\G 后不要添加 ; 号, 不然会出 ERROR

  测试:
  1、在主服务器test数据库中创建user表


  • mysql>use test1;  

  • mysql>create table user(id int); 
  2、在从服务器中查看user表


  • mysql>use test1;  

  • mysql> show tables like ‘user’;  
  • +———————-+  
  • | Tables_in_test(user) |  
  • +———————-+  
  • | user |  
  • +———————-+  
  • 1 row in set (0.00 sec) 
  说明主从数据同步成功。
  常见问题归纳:
  1.在从数据库中查看slave状态时出现
  The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it)
  说明方从服务器里my.cnf中的server-id有相同的。
  解决办法:
  修改my.cnf里的server-id,并重启数据库服务。my.cnf文件默认有server-id=1
  其它说明
  主服务器my.cnf
  #binlog-do-db=需要备份的数据库名,可写多行
  #binlog-ignore-db=不需要备份的数据库名,可写多行
  从服务器my.cnf
  配置已经无用,要在mysql中执行

三、手动更新
在主服务器上执行


  • mysql>flush tables with read lock;  
  • Query OK,rows affected (0.01 sec)  

  • mysql>show master status;  
  • +——————+———-+————–+——————+  
  • | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |  
  • +——————+———-+————–+——————+  
  • | mysql-bin.0000011 | 260| | |  
  • +——————+———-+————–+——————

在从服务器上执行

  • mysql>select master_pos_wait(‘mysql-bin.0000011′,’260′);  
  • +————————————————–+  
  • | master_pos_wait(‘mysql-bin.0000011′,’260′) |  
  • +————————————————–+  
  • | 0 |  
  • +————————————————–+  
  • 1 row in set (0.01 sec)

  注意,执行这条语句的时候,可能会有MySQL server has gone away 错误,木有关系,多执行几次就好了

同步完成后,在主服务器上执行解锁


  • mysql>unlock tables;

停止同步 stop slave;
 
如果主库有数据是,先锁定主库,把主库data目录下所以文件复制到从库后,在这同步操作。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-270845-1-1.html 上篇帖子: 谈谈MySQL的异常处理 下篇帖子: mysql主从复制跳过错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表