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

[经验分享] mysql replication-fighting

[复制链接]

尚未签到

发表于 2018-10-9 06:35:55 | 显示全部楼层 |阅读模式
  mysql replicaton
  环境:主:192.168.48.150
  从:192.168.48.152
  简单的说,就是master把数据库的改变写入二进制日志,slave同步这些二进制日志,并根据这些二进制进行数据操作。
  mysql Replicaton的用途
  1.fail over
  2.backup server
  3.high performance
  master和slave上的数据是一样的,如果我们从master上进行写操作,slave上进行读操作,这就叫读写分离。
  配置Replication
  step1:
  Slave是通过MYSQL连接登陆到Master上来读取二进制日志的。因此需要在Master上给Slave配置权限。
  mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slaveip' IDENTIFIED BY 'replPass';
  mysql>FLUSH PRIVILEGES;
  eg:在Master上受权:
  mysql> grant replication slave on *.* to repl@192.168.48.152 identified by 'repl';
  mysql> flush privileges;
  在slave上测试连接:
  #mysql -h192.168.48.150 -urepl -prepl
  可以连上表示没有问题。
  step2:
  在Master上要打开二进制日志,并标识server-id。
  server-id用于唯一标识主机,数字取值范围1-2**32-1.
  #vi /etc/my.cnf
  [mysqld]
  log-bin
  binlog-format=row
  sync-binlog=1
  server-id=1
  #service mysqld restart
  step3:
  制作一个Master的完整备份,并且执行prepare。
  #这里的原理是,将主要原有的数据备份打包到从上,从服务器直接还原,在这个基础之上再进行二进制传输同步,这样会节省资源。
  我们使用innobackupex这个工具,这个工具可以记录备份数据的二进制编号,这样从服务器就会从备份的基础上再进行同步,也就是增量备份。
  #innobackupex --user=dba --password=xxx/var/lib/backup/
  #innobackupex --use-memory=500m --apply-log /var/lib/backup/2014-03_16-40-05/
  eg: 在master上的配置
  #innobackupex安装:http://my.oschina.net/sansom/blog/160434
  # mkdir /var/lib/backup/
  # cd /var/lib/backup/
  #innobackupex --user=root --password=123456 /var/lib/backup/
  #这样目录里会生成原始文件
  #还要执行一步操作,就是生成innodb日志文件
  #innobackupex --use-memory=500m --apply-log /var/lib/backup/原始文件名/
  step4:
  将备份拷贝至slave,并放入数据文件目录。
  in master:
  #yum install openssh-clients -y (master and slave both need to install)
  #scp -r /var/lib/backup/2016-03-11_10-26-10/ 192.168.48.152:/var/lib/backup/
  in slave:
  #service mysqld stop
  #mv /var/lib/backup/2016-03-11_07-40-35/* /var/lib/mysql/(生产环境中不要直接覆盖)
  #ls(查看是否所有文件都被mv过去,如果没有,就再次复制过去)
  #cd /var/lib/mysql/
  #chown -R mysql. * #拷贝过来的文件要改权限
  #service mysqld start(这一步我的mysql启不来了,原因是没有关闭selinux)
  #查看数据是否同步正确
  step5:
  在slave上配置server-id,标识服务器。
  # vi /etc/my.cnf
  [mysqld]
  server-id=2
  #service mysqld restart
  step6:
  查看并记录二进制日志中的position ID.(这个是innobackupex工具为我们生成的)
  in slave:
  #cd /var/lib/mysql
  cat xtrabackup_binlog_info
  显示:mysqld-bin.000001       341
  position id 为341
  step7:
  配置slave replication.
  in slave:
  mysql>change master to master_host='192.168.48.150',
  -->master_user='repl',
  -->master_password='repl',
  -->master_log_file='mysqld-bin.000001',
  -->master_log_pos=341;
  step8:
  启动replication,并检查结果。
  in slave:
  mysql>start slave;
  mysql>show slave status\G;
  结果如下:
  *************************** 1. row ***************************
  Slave_IO_State: Waiting for master to send event(当前无同步事件)
  Master_Host: 192.168.48.150(主 ip)
  Master_User: repl(主用户)
  Master_Port: 3306(端口)
  Connect_Retry: 60(重试时间/s)
  Master_Log_File: mysqld-bin.000001(主同步二进制文件)
  Read_Master_Log_Pos: 341(主位置号)
  Relay_Log_File: mysqld-relay-bin.000002(从二进制文件)
  Relay_Log_Pos: 252(从位置号)#主从的号虽然不一样,但是是有对应关系的,逻辑上是一样的。
  Relay_Master_Log_File: mysqld-bin.000001
  Slave_IO_Running: Yes(必须为yes时才正常)
  Slave_SQL_Running: Yes(必须为yes时才正常)
  #主会启运一个进程,从会启运两个进程,我们可以执行如下语句查看:
  master_mysql>show processlist\G;
  *************************** 1. row ***************************
  Id: 11
  User: repl
  Host: 192.168.48.152:54413
  db: NULL
  Command: Binlog Dump
  Time: 707
  State: Has sent all binlog to slave; waiting for binlog to be updated
  Info: NULL
  *************************** 2. row ***************************
  slave_mysql>show processlist\G;
  *************************** 2. row ***************************
  Id: 3
  User: system user
  Host:
  db: NULL
  Command: Connect
  Time: 680
  State: Waiting for master to send event
  Info: NULL
  *************************** 3. row ***************************
  Id: 4
  User: system user
  Host:
  db: NULL
  Command: Connect
  Time: 680
  State: Has read all relay log; waiting for the slave I/O thread to update it
  Info: NULL
  3 rows in set (0.00 sec)
  #从的两个进程,一个用于接收二进制,另一个用于解析二进制,执行语句。
  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: 341
  Relay_Log_Space: 408
  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)
  这样就同步了,在主上操作的,从都会同步喽。


运维网声明 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.yunweiku.com/thread-617914-1-1.html 上篇帖子: MySQL数据库互为双主搭建 下篇帖子: MySQL基础应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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