前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java开发环境系列:MySQL实战之开启主从复制功能

Java开发环境系列:MySQL实战之开启主从复制功能

作者头像
架构师小跟班
发布2019-08-06 17:15:12
5600
发布2019-08-06 17:15:12
举报
文章被收录于专栏:架构师小跟班架构师小跟班

准备工作及要求:

1)两台虚拟机或服务器

2)两台机器的MySQL数据库的版本一致

3)本次测试使用的数据库分别为阿里云MySQL和本地安装的MySQL,版本:mysql-5.7.20-winx64

原理:

实际上是依赖于MySQL的二进制日志文件。MySQL将自己所有的增删改查操作全部记录在日志中,其他MySQL服务经授权后可以根据日志同步到自己的库里。

修改主服务器master:

使其支持二进制日志功能。

   #vi /etc/my.cnf

       [mysqld]

       log-bin=mysql-bin   //[必须]启用二进制日志

       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

修改从服务器slave:

本地安装的绿色版mysql,直接修改my.ini配置文件即可

   #vi /etc/my.cnf

       [mysqld]

       log-bin=mysql-bin   //[不是必须]启用二进制日志

       server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

重启两台服务器的mysql服务

阿里云重启服务:

mysql -u root -p 

mysql>service mysqld restart

本地重启服务:

任务管理器,关闭mysqld服务,开启。

在主服务器上建立帐户并授权slave:

mysql -u root -p 

mysql>grant replication slave on *.* to 'root'@'%' identified by '123456';

//一般不用root帐号,%表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

登录主服务器的mysql,查询master的状态

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000002 |   152203 |              |                  |                   |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

配置从服务器Slave:

mysql>change master to master_host='120.78.144.82',master_user='root',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=152203;

//注意不要断开,152203数字前后无单引号。

mysql>start slave;

//启动从服务器复制功能

注意:如果你以前配置过主从的话,一定要先关闭,命令:stop slave;

检查从服务器复制功能状态:

mysql> show slave status;

              Slave_IO_State: Waiting for master to send event

              Master_Host: 192.168.2.222  //主服务器地址

              Master_User: mysync   //授权帐户名,尽量避免使用root

              Master_Port: 3306    //数据库端口,部分版本没有此行

              Connect_Retry: 60

              Master_Log_File: mysql-bin.000004

              Read_Master_Log_Pos: 600     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos

              Relay_Log_File: ddte-relay-bin.000003

              Relay_Log_Pos: 251

              Relay_Master_Log_File: mysql-bin.000004

              Slave_IO_Running: Yes    //此状态必须YES

              Slave_SQL_Running: Yes     //此状态必须YES

注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。

以上操作过程,主从服务器配置完成。

主从服务器测试:

主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:

  mysql> create database hi_db;

  Query OK, 1 row affected (0.00 sec)

  mysql> use hi_db;

  Database changed

  mysql>  create table hi_tb(id int(3),name char(10));

  Query OK, 0 rows affected (0.00 sec)

  mysql> insert into hi_tb values(001,'bobu');

  Query OK, 1 row affected (0.00 sec)

  mysql> show databases;

   +--------------------+

   | Database           |

   +--------------------+

   | information_schema |

   | hi_db                |

   | mysql                |

   | test                 |

   +--------------------+

   4 rows in set (0.00 sec)

从服务器Mysql查询:

   mysql> show databases;

   +--------------------+

   | Database               |

   +--------------------+

   | information_schema |

   | hi_db                 |       //I'M here,大家看到了吧

   | mysql                 |

   | test          |

   +--------------------+

   4 rows in set (0.00 sec)

   mysql> use hi_db

   Database changed

   mysql> select * from hi_tb;           //查看主服务器上新增的具体数据

   +------+------+

   | id   | name |

   +------+------+

   |    1 | bobu |

   +------+------+

   1 row in set (0.00 sec)

完成:

编写一shell脚本,用nagios监控slave的两个yes(Slave_IO及Slave_SQL进程),如发现只有一个或零个yes,就表明主从有问题了,发短信警报吧。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-07-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 准备工作及要求:
  • 原理:
  • 修改主服务器master:
  • 修改从服务器slave:
  • 重启两台服务器的mysql服务
  • 在主服务器上建立帐户并授权slave:
  • 登录主服务器的mysql,查询master的状态
  • 配置从服务器Slave:
  • 检查从服务器复制功能状态:
  • 主从服务器测试:
  • 完成:
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档