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

[经验分享] mysql的单向复制

[复制链接]

尚未签到

发表于 2018-10-11 09:25:28 | 显示全部楼层 |阅读模式
  mysql单向复制
  为了提高主从服务器的健壮性,我们选择了mysql单向复制的方法,当主服务器宕机时,从服务器依旧可以接管,并且保持数据的相对完整性,而从服务器备份的时候不会干扰到主服务器的工作,可以说是一个强大的功能。
  原理:将主服务器内数据更新封装为二进制文件的形式,发送到从服务器内更新,从服务器连接主服务器,主服务器也能得到它上次更新的位置。所有更新必须在主服务器上进行。
  环境:rhel 6.5
  主机:192.168.122.102(简称server2~)
  次机:192.168.122.103 ( 简称server3~ )
  首先在两台主机上安装mysql 环境(也可以选择多台从服务器),分别执行
  [root@server2 ~]# yum install mysqlmysql-server -y
  [root@server3 ~]# yum install mysqlmysql-server -y
  安装完毕后开始启动 server2 上的mysql,执行
  [root@server2 ~]# /etc/init.d/mysqld start
DSC0000.png

  如上图,可以看到在开启mysql的时候出现了这种错误,这时需要删除以前的socker便可:执行
  rm /var/lib/mysql/mysql.sock
DSC0001.png

  可以看到这次启动就成功了然后在server2直接输入
  mysql> GRANT REPLICATIONSLAVE,RELOAD,SUPER ON *.* TO test@'192.168.122.103'>(建立主机的同步账号)
  mysql> Flush privileges;
  从而允许 server3来作为slave来登陆server2,继续在server2上更改/etc/my.cnf 文件
  [root@server2 ~]# vim /etc/my.cnf
  在[mysqld]内添加下面四行内容
  log-bin=mysql-bin(启动二进制日志系统)
  binlog-do-db=adol(二进制需要同步的数据库名)
  server-id=1(必须为1到232–1之间的一个正整数值,而且不可重复)
  binlog-ignore-db=mysql(避免同步 mysql 用户配置,以免不必要的麻烦)
DSC0002.png

  :wq 退出保存
  执行 /etc/init.d/mysql restart 更新配置
DSC0003.png

  在server3上修改 /etc/my.cnf 文件
  [root@server3 ~]# vim /etc/my.cnf
  添加下列行到【mysqld】内
  server-id=2 (不能与server2一样,这是身份标志位,联想身份证号)
  master-host=192.168.122.102(主机server2的ip)
  master-user=test (主机可用的用户名称)
  master-password=adol(主机可用名对应的密码)
  master-port=3306(3306是默认的mysql端口)
  master-connect-retry=60(断开重新连接时间,单位是秒)
  replicate-ignore-db=mysql(忽略避免同步的数据库MYSQL)
  replicate-do-db=adol(需要同步的数据库)
DSC0004.png

  [root@server3 ~]# /etc/init.d/mysqld restart (重启mysql)
  在server2的mysql内执行
  mysql> show master status;
DSC0005.png

  可得出这样的结果,可获取它的File和position值。
  在server3内进入数据库更新配置,如下
  mysql> stop slave;
  mysql> change master to master  changemaster_host='192.168.122.102',master_user='test',master_password='adol',master_log_file='mysql-bin.000002',master_log_pos=106;
  mysql > start slave;
  被颜色标记的就是我们从master 那里获得的数据。
  Server3执行  mysql > show slave status\G
DSC0006.png

  可以得到          Slave_IO_Running: Yes
  Slave_SQL_Running: Yes
  当他们的值为YES时,说明slave 就可以从master同步复制了。
  检测:
  我的Server2和server3内数据都如下
  mysql> show databases;
  +--------------------+
  | Database           |
  +--------------------+
  | information_schema |
  | adol               |
  | adold              |
  | marjur             |
  | mysql              |
  | ooo                |
  +--------------------+
  6 rows in set (0.09 sec)
  mysql> use adol;
  Database changed
  mysql> show tables;
  +----------------+
  | Tables_in_adol |
  +----------------+
  | a              |
  | k              |
  +----------------+
  2 rows in set (0.00 sec)
  现在在server2内添加表
  mysql> create table dd(name varchar(20));
  Query OK, 0 rows affected (0.06 sec)
  在server3内进入数据库adol内执行
  mysql> show tables;
DSC0007.png

  可以看到,server3多出了一个为dd的表,说明单向复制是成功的。
  (注意:默认复制只能复制adol数据库内的内容,adol外的内容变动不会对  
  server3 产生影响 。)


运维网声明 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-620213-1-1.html 上篇帖子: mysql 多源复制 下篇帖子: 利用amoeba实现mysql读写分离
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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