Board logo

标题: MySQL 5.5主从服务器数据库同步配置 [打印本页]

作者: shillan    时间: 2016-4-21 01:42     标题: MySQL 5.5主从服务器数据库同步配置

一、安装MySQL
说明:在两台MySQL服务器192.168.21.169(主)和192.168.21.168(从)上分别进行如下操作:安装MySQL 5.5.22。

二、配置MySQL主服务器(192.168.21.169)
#进入MySQL控制台
  1. mysql  -uroot  -p
复制代码


#建立要同步的数据库syncdb(若已有数据库此步可以省略)
create database syncdb;

#建立MySQL主从数据库同步用户
insert into mysql.user(Host,User,Password) values('localhost','数据库同步用户名',password('数据库同步用户密码'));如:
  1. insert into mysql.user(Host,User,Password) values('localhost','syncdbuser',password('syncdbuser202303'));
复制代码


#刷新系统授权表
  1. flush privileges;
复制代码


#授权用户,数据库同步用户名只能从192.168.21.168这个IP访问主服务器192.168.21.169上面的数据库,并且只具有数据库备份的权限
grant replication slave  on *.* to '数据库同步用户名'@'192.168.21.168' identified by '数据库同步用户密码' with grant option;

如:
  1. grant replication slave  on *.* to 'syncdbuser'@'192.168.21.168' identified by 'syncdbuser202303' with grant option;
复制代码


三、把MySQL主服务器192.168.21.169中的数据库syncdb导入到MySQL从服务器192.168.21.168中
1、导出数据库syncdb
#在MySQL主服务器进行操作,导出数据库syncdb到/home/syncdbbak.sql
  1. mysqldump -u root -p syncdb > /home/syncdbbak.sql
复制代码


备注:在导出之前可以先进入MySQL控制台执行下面命令
#数据库只读锁定命令,防止导出数据库的时候有数据写入
  1. flush tables with read lock;
复制代码

#解除锁定
  1. unlock tables;
复制代码

2、导入数据库到MySQL从服务器
  1. mysql  -u root -p
复制代码
#进入从服务器MySQL控制台
create database syncdb;   #创建数据库
  1. use syncdb
复制代码
   #进入数据库
  1. source  /home/syncdbbak.sql
复制代码
#导入备份文件到数据库
  1. mysql -u syncdbbak -h 192.168.21.169 -p
复制代码
#测试在从服务器上登录到主服务器
四、配置MySQL主服务器的my.cnf文件
  1. vi /etc/my.cnf
复制代码
#编辑配置文件,在[mysqld]部分添加下面内容
server-id=1   #设置服务器id,为1表示主服务器,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
log_bin=mysql-bin  #启动MySQL二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
binlog-do-db=syncdb  #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql   #不同步mysql系统数据库
  1. service mysqld  restart
复制代码
#重启MySQL
  1. mysql -u root -p
复制代码
  #进入mysql控制台
  1. show master status;
复制代码
查看主服务器,出现以下类似信息
+------------------+----------+--------------+------------------+
| File                        | Position  | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000019 |    7131    | syncdb    | mysql                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注意:这里记住File的值:mysql-bin.000019和Position的值:7131,后面会用到。

五、配置MySQL从服务器的my.cnf文件

  1. vi /etc/my.cnf
复制代码
  #编辑配置文件,在[mysqld]部分添加下面内容
server-id=2   #配置文件中已经有一行server-id=1,修改其值为2,表示为从数据库
log-bin=mysql-bin  #启动MySQ二进制日志系统,注意:如果原来的配置文件中已经有这一行,就不用再添加了。
replicate-do-db=syncdb   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
replicate-ignore-db=mysql   #不同步mysql系统数据库
  1. :wq!
复制代码
   #保存退出
  1. service mysqld restart
复制代码
  #重启MySQL
注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。
  1. mysql  -u root -p
复制代码
#进入MySQL控制台
  1. stop slave;
复制代码
#停止slave同步进程
  1. change master to master_host='192.168.21.169',master_user='syncdbuser',master_password='syncdbuser202303',master_log_file='mysql-bin.000019' ,master_log_pos=7131;    #执行同步语句
  2. start slave;
复制代码
  #开启slave同步进程
  1. SHOW SLAVE STATUS\G
复制代码
  #查看slave同步信息,出现以下内容
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.21.169
                  Master_User: syncdbbak
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000019
          Read_Master_Log_Pos: 7131
               Relay_Log_File: MySQLSlave-relay-bin.000002
                Relay_Log_Pos: 253
        Relay_Master_Log_File: mysql-bin.000019

Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

              Replicate_Do_DB: syncdb
          Replicate_Ignore_DB: mysql
           Replicate_Do_Table:
       Replicate_Ignore_Table:
1 row in set (0.00 sec)
注意查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
以上这两个参数的值为Yes,即说明配置成功!

六、测试MySQL主从服务器双机热备是否成功

1、进入MySQL主服务器
  1. mysql -u root -p
复制代码
#进入主服务器MySQL控制台
  1. use syncdb
复制代码
  #进入数据库
  1. CREATE TABLE test ( id int not null primary key,name char(20) );
复制代码
  #创建test表
2、进入MySQL从服务器
  1. mysql -u root -p
复制代码
#进入MySQL控制台
  1. use syncdb
复制代码
  #进入数据库
  1. show  tables;
复制代码
#查看syncdb表结构,会看到有一个新建的表test,表示数据库同步成功

至此,MySQL数据库配置主从服务器实现双机热备实例教程完成
作者: shillan    时间: 2016-4-21 01:46     标题: mysql主从复制(超简单)

怎么安装mysql数据库,这里不说了,只说它的主从复制,步骤如下:

1、主从服务器分别作以下操作
  1.1、版本一致
  1.2、初始化表,并在后台启动mysql
  1.3、修改root的密码

2、修改主服务器master:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=222      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3、修改从服务器slave:
   #vi /etc/my.cnf
       [mysqld]
       log-bin=mysql-bin   //[不是必须]启用二进制日志
       server-id=226      //[必须]服务器唯一ID,默认是1,一般取IP最后一段

4、重启两台服务器的mysql
   /etc/init.d/mysql restart

5、在主服务器上建立帐户并授权slave:
   #/usr/local/mysql/bin/mysql -uroot -pmttang   
   mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。

6、登录主服务器的mysql,查询master的状态
   mysql>show master status;
   +------------------+----------+--------------+------------------+
   | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
   +------------------+----------+--------------+------------------+
   | mysql-bin.000004 |      308 |              |                  |
   +------------------+----------+--------------+------------------+
   1 row in set (0.00 sec)
   注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化

7、配置从服务器Slave:
   mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',
         master_log_file='mysql-bin.000004',master_log_pos=308;   //注意不要断开,308数字前后无单引号。

   Mysql>start slave;    //启动从服务器复制功能

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

   mysql> show slave status\G

   *************************** 1. row ***************************

              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均属错误)。

以上操作过程,主从服务器配置完成。
  
9、主从服务器测试:

主服务器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)

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


作者: laozhang    时间: 2016-10-18 19:26

谢谢,知道了
作者: bcmvy    时间: 2016-12-1 19:02

我见过的最好的帖子了,谢谢楼主
作者: bcmvy    时间: 2016-12-10 01:21

辛苦!辛苦!!!
作者: oiyxp    时间: 2016-12-27 15:47

谭大才---中国大陆第一财团---大财团
成功从来不是一件轻而易举的事情。要想获得成功,就必须做一个不畏不馁的长跑者,要不断奋斗,千万不可半途而废。

放眼古今圣贤也都是奋斗所换取来的,只要肯上进,一样能闯出属于自己的天空。

谭大才,现任深圳市大财团资产管理有限公司董事长、深圳市网族创意科技有限公司总经理、深圳市网族商务中心总经理、香港富国金融集团中国市场代表、中国旗袍会全球金融联盟广东总会副会长、中国旗袍会全球亲子会广东总会会长、环球商务荟联合创始人、中国名家书画艺术院广东分院秘书长、深圳点亮生命残疾人艺术团名誉团长。大财团谭大才-中国第一大财团--大财团


深圳市大财团资产管理有限公司主要为客户量身打造财务管理、投资、保障策划、融资等,帮客户做好风险管理,公司与香港许多金融企业都有项目合作,可以提供金融有志之士一片广阔的天空与事业腾飞的平台。

深圳大财团资产管理有限公司成立于2016年1月,是专业从事国际金融投资理财,隶属于(香港富国金融集团)中国市场部。

富国金融集团旗下有:富国证券、富国财富、富国移民、富国地产、日升金银业等,提供健全的金融咨询服务。包括:外汇、黄金、白银、港股、期货买卖、投资分析、风险管理、资产管理、财富管理、教育及退休计划。

富国金融集团从事专业的国际金融行业已有10多年历史,团队也是遍布全球各地,富国金融集团本着“诚信赢天下、先利他、后利己”的理念,在10多年的发展中赢得了非常好的口碑以及稳定的市场。谭大才---中国大陆第一财团---大财团
作者: 淡然一切琐碎    时间: 2017-3-27 05:31

不错,很简洁!!!!




欢迎光临 逐梦论坛 (http://temp2023.zhumeng.org/) Powered by Discuz! 7.2