韦德国际1946英国 > 计算机网络 > 两mysql数据库同步实现异步备份方法

原标题:两mysql数据库同步实现异步备份方法

浏览次数:106 时间:2019-12-12

  1. master mysql 中期维改革/etc/my.cnf 在mysqld下增加如下两行:
    log-bin=/var/lib/mysql/mysql-bin.log
    server-id=1
    #binlog-do-db=DB1
    #binlog-do-db=DB2     #假如备份四个数据库,重复设置这几个选项就可以
    2.重启mysql,添加slave replication 用户
    GRANT REPLICATION SLAVE ON *.* TO [email protected] IDENTIFIED BY slave_password;
    FLUSH PRIVILEGES;
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;
     
    ------------------ ---------- -------------- ------------------
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    ------------------ ---------- -------------- ------------------
    | mysql-bin.000001 |      890 |              |                  |
    ------------------ ---------- -------------- ------------------
    1 row in set (0.00 sec)
    unlock tables;
    记下 file名和binlog的位置.
    4.在slave mysql上操作.
    编排从服务器的构造文件:/etc/my.cnf
    [mysqld]
    #sync data
    server-id=2            #在乎不可能重复
    master-host=192.168.100.10
    master-user=slave
    master-password=slave_password
    master-port=3306
    master-connect-retry=60
    #replicate-do-db=DB1
    #replicate-do-db=DB2
    5.重启slave mysql .
    stop slave;
    CHANGE MASTER TO MASTER_HOST=192.168.100.13, MASTER_USER=slave, MASTER_PASSWORD=slave_password, MASTER_LOG_FILE=mysql-bin.000001, MASTER_LOG_POS=890;
    start slave;
    5.在master mysql上创立数据库测量试验,从库是或不是同步.或然show slave statusG 查看
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    两个yes为同步.
    补充:
    在从服务器上应用show slave statusG
    Slave_IO_Running,为No,
        则说明IO_THREAD没有运维,请实施start slave io_thread
        Slave_SQL_Running为No
        则复制出错,查看Last_error字段杀绝错误后实行start slave sql_thread
        查看Slave_IO_State字段空 //复制未有运行
        Connecting to master//未有连接上master
        Waiting for master to send event//已经连上
        主服务器上的连锁命令:
        show master status
        show slave hosts
        show logs
        show binlog events
        purge logs to log_name
        purge logs before date
    reset master(老版本flush master)
        set sql_log_bin=
        从服务器上的连带命令:
        slave start
        slave stop
        SLAVE STOP IO_THREAD //此线程把master段的日记写到本地
        SLAVE start IO_THREAD
        SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库
        SLAVE start SQL_THREAD
        reset slave
        SET GLOBAL SQL_SLAVE_SKIP_COUNTER
        load data from master
    show slave status(SUPER,REPLICATION CLIENT)
        CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=,MASTER_USER=, MASTER_PASSWOEscortD= //动态改变master消息
        PURGE MASTER [before date] 删除master端已一齐过的日志

master-port     =3306

. master mysql 中期维校正/etc/my.cnf 在mysqld下增多如下两行: log-bin=/var/lib/mysql/mysql-bin.log server-id=1 #binlog-do-db=DB1 #binlog-do-db=DB2 #如果备份多少个数据库,...

------------------ ---------- -------------- ------------------

#

保存后,重启mysql

step5:在A上执行

重启MySQL,创设二个MySQL帐号为共同专用
mysql> GRANT REPLICATION SLAVE ON *.* TO [email=]'back'@'%'[/email] IDENTIFIED BY 'back';
mysql> GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO  [email=]'back'@'%'[/email] IDENTIFIED BY 'back';
mysql> FLUSH PRIVILEGES ;

在服务器A MySQL命令符下:
mysql> slave stop;
mysql> change master to master_host='192.168.1.124', master_user='back', master_password='back', master_log_file='mysql-bin.000013', master_log_pos=98;
mysql> slave start;

replicate-ignore-db=mysql      

#grant replication slave,replication client,reload,super on *.* to 'sync_user'@'192.168.1.2' identified by '123456' with grant option;//用于B访问

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

Slave_IO_State: Waiting for master to send event

replicate-do-db =db2

Slave_IO_Running: Yes

 

2.在/etc/my.cnf上举办连锁陈设

8.实施show processlist G查看是或不是同步成功

注意

何况记录下两台服务器的File和Position,此处假若:

replicate-do-db =db1

两台服务器
192.168.1.1(A)
192.168.1.2(B)
先保障那mysql的本子是同样的,参照他事他说加以考察

 

------------------ ---------- -------------- ------------------

------------------ ---------- -------------- ------------------

master-user     =sync_user

Slave_IO_Running: Yes

服务器A:
show master status G
flush tables with read lock;
服务器B:
show master status G
flush tables with read lock;

2、设置同步Slave
修改my.cnf文件,添加
server-id = 2
master-host = 192.168.1.123
master-user = back
master-password = back
master-port = 3306
replicate-ignore-db=mysql
replicate-do-db=discuz

 

4.停止MySQL

校勘slave服务器的my.cnf,增加
log-bin=/var/log/mysql/updatelog
binlog-do-db=discuz
binlog-ignore-db=mysql

这边填写的多少完全相反

#start slave;//初叶同步

#show master status;

master-host     =192.168.1.2

replicate-do-db =db2

 

3.把两台服务器上急需一齐的数据库进行拷贝,保障这两台数据库开头状态相仿。

方法三

replicate-ignore-db=mysql  server-id         = 2

服务器A:
change master to
    -> master_host='192.168.1.2',
    -> master_两mysql数据库同步实现异步备份方法。user='sync_b',
    -> master_password='bbb',
    -> master_log_file='mysql-bin.000002',
    -> master_log_pos=002;
服务器B:
change master to
    -> master_host='192.168.1.1',
    -> master_user='sync_a',
    -> master_password='aaa',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=001;

4.展开双向同步

master-host     =192.168.1.1

step3,实行show slave statusG;如出示如下内容,表示同步设置成功。

#grant replication slave,replication client,reload,super on *.* to 'sync_user'@'192.168.1.1' identified by '123456' with grant option;//用于A访问

唤醒:假诺更换了主服务器的配置,记得删除从服务器上的master.info文件。否则从服务器使用的也许老配置,也许会以致错误。

瞩目:关于要复制三个数据库时,binlog-do-db和replicate-do-db选项的安装,英特网海人民广播电视台湾大学人就是用半角逗号分隔,经过测量试验,那样的说教是漏洞非常多的,MySQL官方文书档案也明确建议,如若要备份多个数据库,只要重复设置相应选项就能够了。
比如:
binlog-do-db=a
binlog-do-db=b
replicate-do-db=a
replicate-do-db=b

服务器A:192.168.1.1 服务器B:192.168.1.2 2.创建同步客商 主机域A:192.168.1.2 客商名A:sync_a 密码A:aaa 主机域B:192.168.1.1 用户名...

1 row in set (0.00 sec)

CHANGE MASTER TO  MASTER_HOST='192.168.1.1', MASTER_PORT=3306, MASTER_USER='sync_user', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000054', MASTER_LOG_POS=35;

后生可畏、思考服务器
鉴于MySQL差异版本之间的(二进制日志卡塔尔国binlog格式或许会不一样等,因而最佳的选配组合是Master的MySQL版本和Slave的本子雷同恐怕更低,Master的版本鲜明不可能高于Slave版本。
more.. | less.. | 本文中,大家假使主服务器(以下简称Master卡塔尔(英语:State of Qatar)和从服务器(以下简单称谓Slave卡塔尔国的本子都是5.0.27,操作系统是RedHat Linux 9。
若是同步Master的主机名称叫:master(IP:192.168.1.123卡塔尔国,Slave主机名称叫:slave(IP:192.168.1.124卡塔尔(英语:State of Qatar),2个MySQL的basedir目录都以/usr/local/mysql,datadir都以:/var/lib/mysql。
二、设置同步服务器
1、设置同步Master
修改 my.cnf 文件,在
# Replication Master Server (default)
# binary logging is required for replication
丰裕如下内容:
#log-bin=/var/log/mysql/updatelog
server-id = 1
binlog-do-db=discuz
binlog-ignore-db=mysql
重启MySQL,创立三个MySQL帐号为同步专用
# /usr/local/mysql/bin/mysql -u root -p
mysql> GRANT REPLICATION SLAVE ON *.* TO [email=]'back'@'%'[/email] IDENTIFIED BY 'back';
倘使想要在Slave上有权限奉行 "LOAD TABLE FROM MASTE福特Explorer" 或 "LOAD DATA FROM MASTEEscort" 语句的话,必得付与全局的 FILE 和 SELECT 权限:
mysql>GRANT FILE,SELECT,REPLICATION SLAVE ON *.* TO  [email=]'back'@'%'[/email] IDENTIFIED BY 'back';
mysql> FLUSH PRIVILEGES ;

执行  #flush privileges; 更新数据库使客商生效。

 

#mysqladmin -u root -p shutdown

step4:上一步未有毛病。则在B上继续试行show master status;

#stop slave;//结束同步

#stop slave;//甘休同步

本文由韦德国际1946英国发布于计算机网络,转载请注明出处:两mysql数据库同步实现异步备份方法

关键词:

上一篇:sql和MySQL的语句执行顺序分析_Mysql_脚本之家,S

下一篇:没有了