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

[经验分享] 生产环境 MySQL主从复制(同步)

[复制链接]

尚未签到

发表于 2018-10-1 09:39:33 | 显示全部楼层 |阅读模式
服务器信息
  1、主服务器信息
  solin@mysql-master:~$ lsb_release -a
  No LSB modules are available.

  Distributor>  Description:     Ubuntu 14.04.4 LTS
  Release:   14.04
  Codename:  trusty
  solin@mysql-master:~$ mysql -V
  mysql  Ver 14.14 Distrib 5.5.50, for debian-linux-gnu (x86_64) using readline 6.3
  solin@mysql-master:~$ ip ro li
  default via 192.168.119.1 dev eth0
  192.168.119.0/24 dev eth0  proto kernel  scope linksrc 192.168.119.95
DSC0000.png

  2、从服务器信息
  solin@mysql-slave:~$ lsb_release -a
  No LSB modules are available.

  Distributor>  Description:     Ubuntu 14.04.4 LTS
  Release:   14.04
  Codename:  trusty
  solin@mysql-slave:~$ mysql -V
  mysql  Ver 14.14 Distrib 5.5.47, for debian-linux-gnu (x86_64) using readline 6.3
  solin@mysql-slave:~$ ip ro ls
  default via 192.168.119.1 dev eth0
  192.168.119.0/24 dev eth0  proto kernel  scope linksrc 192.168.119.137
DSC0001.png

MySQL主从复制示意图
DSC0002.png

Master主服务器配置
  1、修改my.cnf配置文件
  vi /etc/mysql/my.cnf
  在[mysqld]中添加:
  bind-address            =  0.0.0.0
  server-id              = 1
  log_bin                        = /var/log/mysql/mysql-bin.log
  binlog_do_db           = include_database_name
  binlog_ignore_db       = include_database_name
  注:
  server-id 服务器唯一标识;
  log_bin 启动MySQL二进制日志;
  binlog_do_db 指定记录二进制日志的数据库;
  binlog_ignore_db 指定不记录二进制日志的数据库。
DSC0003.png

  2、查看log_bin是否生效
  root@mysql-master:~# mysql -uroot -p -e "show variables like 'log_bin';"
  Enter password:
  +---------------+-------+
  | Variable_name | Value |
  +---------------+-------+
  | log_bin       | ON    |
  +---------------+-------+
DSC0004.png

  3、登陆主服务器MySQL创建从服务器用到的账户和权限

  mysql> grant replication slave on *.* to 'rep'@'192.168.119.137'>  Query OK, 0 rows affected (0.01 sec)

  mysql> grant replication slave on *.* to 'masterbackup' @' 192.168.119.137'>  mysql> flush privileges;
  Query OK, 0 rows affected (0.00 sec)
DSC0005.png

  4、重启mysql
  root@mysql-master:~# /etc/init.d/mysql restart
DSC0006.png

  5、主库上做备份
  锁定数据库
  mysql> flush table with read lock;
  Query OK, 0 rows affected (0.01 sec)
  mysql> show master status;
  +------------------+----------+--------------+------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000007 |      107 |              |                  |
  +------------------+----------+--------------+------------------+
  1 row in set (0.01 sec)
  mysql> show master logs;
  +------------------+-----------+
  | Log_name         | File_size |
  +------------------+-----------+
  | mysql-bin.000001 |       126 |
  | mysql-bin.000002 |       126 |
  | mysql-bin.000003 |       126 |
  | mysql-bin.000004 |       126 |
  | mysql-bin.000005 |       126 |
  | mysql-bin.000006 |       126 |
  | mysql-bin.000007 |       107 |
  +------------------+-----------+
  7 rows in set (0.00 sec)
  mysql>
DSC0007.png

  这个窗口保持不变,重新打开一个终端
  solin@mysql-master:~$ sudo su -
  [sudo] password for solin:
  root@mysql-master:~# mysqldump -uroot -p -A -B --events --master-data=2  >/opt/rep.sql
  Enter password:
  root@mysql-master:~# ls -l /opt/
  总用量 4596
  -rw-r--r-- 1 root root 4705979  9月  1 17:25 rep.sql
DSC0008.png

  备份成功,回到刚才终端,解锁数据库
  mysql> unlock tables;
  Query OK, 0 rows affected (0.00 sec)
  mysql> show master status;
  +------------------+----------+--------------+------------------+
  | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  +------------------+----------+--------------+------------------+
  | mysql-bin.000007 |      107 |              |                  |
  +------------------+----------+--------------+------------------+
  1 row in set (0.00 sec)
  mysql> show master logs;
  +------------------+-----------+
  | Log_name         | File_size |
  +------------------+-----------+
  | mysql-bin.000001 |       126 |
  | mysql-bin.000002 |       126 |
  | mysql-bin.000003 |       126 |
  | mysql-bin.000004 |       126 |
  | mysql-bin.000005 |       126 |
  | mysql-bin.000006 |       126 |
  | mysql-bin.000007 |       107 |
  +------------------+-----------+
  7 rows in set (0.00 sec)
DSC0009.png

  授权运程登陆
  vi /etc/mysql/my.cnf
  bind-address = 0.0.0.0
  登陆MySQL数据库

  grant all privileges on *.* to root@"192.168.119.%">
DSC00010.png

  6、把主库的备份迁移到从库(从服务器可以远程连接)
  root@mysql-master:~# mysql -uroot -h192.168.119.137 -p  grant all privileges on *.* to root@"%">  Query OK, 0 rows affected (0.01 sec)
  mysql> flush privileges;
  Query OK, 0 rows affected (0.00 sec)
DSC00011.png

  注:把主库的备份迁移到从库可以在此授权之后做
  3、从库设置,登录Slave从服务器,连接Master主服务器:
  mysql> CHANGE MASTER TO
  -> MASTER_HOST='192.168.119.95',
  -> MASTER_PORT=3306,
  -> MASTER_USER='rep',
  -> MASTER_PASSWORD='ubuntu',
  -> MASTER_LOG_FILE='mysql-bin.000007',
  -> MASTER_LOG_POS=107;
  注:
  master_host对应主服务器的IP地址:192.168.119.95;
  master_port对应主服务器的端口: 3306;
  master_log_file对应show master status显示的File列:mysql-bin.000007;
  master_log_pos对应Position列:107
DSC00012.png

  4、启动slave数据同步
  mysql> start slave;
  Query OK, 0 rows affected (0.00 sec)
DSC00013.png

  查看Slave信息
  1、show slave status\G
  mysql> show slave status\G
  *************************** 1. row ***************************
  Slave_IO_State: Waiting for master to send event
  Master_Host: 192.168.119.95
  Master_User: rep
  Master_Port: 3306
  Connect_Retry: 60
  Master_Log_File: mysql-bin.000008
  Read_Master_Log_Pos: 107

  >
  >
  >  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: 107

  >  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:
  Replicate_Ignore_Server_Ids:
  Master_Server_Id: 1
  1 row in set (0.00 sec)
DSC00014.png

  注:Slave_IO_Running和Slave_SQL_Running都为yes才表示同步成功。


运维网声明 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-606992-1-1.html 上篇帖子: 使用zabbix对mysql5.7主从进行监控 下篇帖子: php+mysql中13位的时间戳
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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