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

[经验分享] Mysql AB复制

[复制链接]

尚未签到

发表于 2018-9-30 11:28:34 | 显示全部楼层 |阅读模式
  Mysql备份与AB复制
  复制有两种方式:同步复制(msylq-cluster) 异步复制(mysql-m/s主从备份又称作双机热备)
  一、Mysql完全备份(冷备份方式和mysqldump工具)
  1、冷备份方式:(必须得停掉mysql服务)
  /etc/init.d/mysqld stop
  将相关文件CP到别的地方,还原的时候需要将文件更改属主属组为mysql即可
  /etc/init.d/mysqld start
  2、mysqldump工具:
  mysqldump -u root -p密码 test > /srv/test.sql (备份test数据库)
  mysqldump -u root -p --all-databases > /srv/alldata.sql (备份所有的数据库)
  恢复方式:mysql -u root -p密码 test < /srv/test.sql(导入test数据库)
  mysql -u root -p密码 < /srv/alldata.sql(导入所有数据)
  二、增量备份(使用时间来恢复和使用位置号来恢复)
  mysql的增量备份使用的方法的是用过mysql的二进制日志来实现的,二进制日志中保存了对mysql的所有操作sql语句;mysql的二进制日志功能默认是关闭的,我们需要自己手动打开;
  打开方式: vim /etc/my.cnf 添加
  log-bin=binlog(开启binlog文件功能)
  log-bin-index=binlog.index(建立binlog索引文件)
  重新启动服务后就会在/var/lib/mysql 中发现binlog 二进制文件;
  二进制的日志文件我们需要使用命令mysqlbinlog 来查看;
  mysqlbinlog binlogfilename
  1、使用时间来恢复:
  例如:mysqlbinlog --start-date=&quot;2012-02-29 9:46:04&quot; --stop-date=&quot;2012-02-29 13:47:24&quot; /var/lib/mysql/binlog.000004 | mysql -u root
  (对start和stop时间段的sql语句交给mysql执行,就能恢复这段时间的数据)
  2、使用位置号来恢复:
  例如:mysqlbinlog /var/lib/mysql/binlog.000001 4 --stop-position 185 | mysql -u root
  (将binlog文件中at4到at185上一个at 的数据恢复到数据库中 以root身份执行)
  
  三、Mysql的AB复制:(同步和异步复制)
  原理: Master必须开启binlog功能
  Slave通过I/O线程读到binlog文件并写入到relaylog文件
  SQL线程会将relaylog文件重新执行到Slave的Mysql中.
  在做AB复制之前一定要保证Master与Slave的数据是一样的,并且保证数据时Master给Slave.
  主库master:192.168.18.51 从库slave:192.168.18.52
  1、在master和slave上安装mysql
  yum install mysql mysql-server -y (主从机都要安装mysql)
  2、在master上修改/etc/my.cnf文件,添加
  [mysqld]
  server-id=1
  #区别master和slave
  log-bin=binlog
  #启动二进制日志文件功能
  log-bin-index=binlog.index
  #添加二进制日志的索引文件
  #binlog-do-db=test
  #二进制文件需要同步的数据库名(不写为同步所有数据)
  #binlog-ignore-db=mysql
  #不同步mysql数据库数据,以免发生因同步了用户信息而从机出现登录问题
  然后重启服务:service mysqld restart
  3、授权给用户:
  master登录数据库:
  [root@kys1230 ~]# mysql

  mysql> grant replication slave on *.* to 'k3'@'192.168.18.51'>  mysql> flush privileges;
  给主机192.168.18.51用户slave授权,密码123。
  在从库slave上测试:
  [root@zhy1230 ~]#  mysql -uk3 -p123 -h 192.168.18.51
  mysql>
  OK正常登录,用户建立成功。
  4、在slave上修改/etc/my.cnf文件,添加
  [mysqld]
  server-id=2
  #从库ID号,和主库区别开
  relay_lo =/var/lib/mysql/mysql-relay-bin
  #开启slave上的relaylog功能
  relay_log_index=/var/lib/mysql/mysql-relay-bin.index
  #建立relaylog索引文件
  
  5、在master上查看主库状态:
  [root@kys1230 ~]# mysql
  mysql> show master status \G;
  *************************** 1. row ***************************
  File: binlog.000002
  Position: 1932
  1 row in set (0.00 sec)
  可以知道File(mysql-bin.000002),Position(1932)
  这里需要注意一点 如果是生产环境可能数据库随时都有写的可能 就需要通过下面的命令锁定一下数据库之后做完操作在解锁
  mysql> flush tables with read lock;
  #锁定表不让写
  mysql>unlock tables;
  #解锁
  6、在slave上查看从库状态:
  [root@zhy1230 ~]# mysql
  mysql> slave stop;
  Query OK, 0 rows affected, 1 warning (0.00 sec)
  mysql> change master to master_host='192.168.0.57',master_user='k3',master_password='123',master_log_file='mysql-bin.000002',master_log_pos=1932;
  Query OK, 0 rows affected (0.13 sec)
  mysql> start slave;
  Query OK, 0 rows affected (0.00 sec)
  mysql> show slave status \G;
  Slave_IO_Running: Yes     (从库I/O读写正常)
  Slave_SQL_Running: Yes    (从库mysql监听正常)
  测试一下
  [root@kys1230 ~]# mysql
  mysql> create database lol;
  
  [root@zhy1230 ~]# mysql
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | lol                |
  | mysql              |
  | test               |
  +--------------------+
  5 rows in set (0.00 sec)
  OK已经过来了!


运维网声明 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-606675-1-1.html 上篇帖子: 常见的mysql集群 下篇帖子: mysql报错解决MySQL Binlog(异常)——mysqlbinlog: unknown variable 'default-character-set=
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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