两mysql数据库同步实现异步备份方法

 

1.服务器状态
服务器A:192.168.1.1
服务器B:192.168.1.2

mysql教程两服务器数据库教程实现同步数据备份方法

1.主库编辑my.cnf:

2.创建同步用户
主机域A:192.168.1.2  用户名A:sync_a  密码A:aaa
主机域B:192.168.1.1  用户名B:sync_b  密码B:bbb
至少分配以下权限grant replication slave

1.服务器状态
服务器A:192.168.1.1
服务器B:192.168.1.2

[mysqld]

3.执行flush privileges

2.创建同步用户
主机域A:192.168.1.2  用户名A:sync_a  密码A:aaa
主机域B:192.168.1.1  用户名B:sync_b  密码B:bbb
至少分配以下权限grant replication slave

log-bin=NEW_NAME

4.停止MySQL

3.执行flush privileges

server-id=1     #配一个唯一的ID编号,1至32。

5.配置my.cnf(my.ini)

4.停止MySQL

#设置要进行或不要进行主从复制的数据库名,同时也要在Slave 上设定。

服务器A 服务器B
user = mysql教程
log-bin = mysql-bin
server-id = 1
binlog-do-db = test
binlog-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = mysql
log-slave-updates
slave-skip-errors = all
sync_binlog = 1 user = mysql
log-bin = mysql-bin
server-id = 2
binlog-do-db = test
binlog-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = mysql
log-slave-updates
slave-skip-errors = all
sync_binlog = 1

5.配置my.cnf(my.ini)

binlog-do-db=数据库名1

server-id必须唯一
binlog-do-db和replicate-do-db表示需要同步的数据库教程
binlog-ignore-db和replicate-ignore-db表示不需要同步的数据库
请不要加入以下命令,该命令并不会解决uid跳号的问题,恰恰相反以下两行命令才是导致uid跳号的罪魁祸首
auto_increment_increment = 2
auto_increment_offset = 1

服务器A 服务器B
user = mysql
log-bin = mysql-bin
server-id = 1
binlog-do-db = test
binlog-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = mysql
log-slave-updates
slave-skip-errors = all
sync_binlog = 1 user = mysql
log-bin = mysql-bin
server-id = 2
binlog-do-db = test
binlog-ignore-db = mysql
replicate-do-db = test
replicate-ignore-db = mysql
log-slave-updates
slave-skip-errors = all
sync_binlog = 1

binlog-do-db=数据库名2

6.重新启动MySQL

server-id必须唯一
binlog-do-db和replicate-do-db表示需要同步的数据库
binlog-ignore-db和replicate-ignore-db表示不需要同步的数据库
请不要加入以下命令,该命令并不会解决uid跳号的问题,恰恰相反以下两行命令才是导致uid跳号的罪魁祸首
auto_increment_increment = 2
auto_increment_offset = 1

binlog-ignore-db=数据库名1

7.进入MySQL控制台

6.重新启动MySQL

binlog-ignore-db=数据库名2

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

7.进入MySQL控制台

mysql> grant replication slave on *.* to
[email protected]
identified by ‘123456’ ;

同时记录下两台服务器的File和Position,此处假设:

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

mysql> flush privileges;

A: File: mysql-bin.000001
  Position: 001
B: File: mysql-bin.000002
  Position: 002

同时记录下两台服务器的File和Position,此处假设:

mysql> show master status;

服务器A:
change master to
    -> master_host=’192.168.1.2′,
    -> master_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;

A: File: mysql-bin.000001
  Position: 001
B: File: mysql-bin.000002
  Position: 002

+——————+———-+————–+——————+

此处填写的数据完全相反

服务器A:
change master to
    -> master_host=’192.168.1.2′,
    -> master_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;

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

8.执行show processlist G查看是否同步成功

此处填写的数据完全相反

+——————+———-+————–+——————+

方法二

8.执行show processlist G查看是否同步成功

| mysql-bin.000008 |      337 |              |                  |

两台服务器
192.168.1.1(A)
192.168.1.2(B)
先保证这mysql的版本是一致的,参考

方法二

+——————+———-+————–+——————+

1.在两台mysql上创建用户,设置权限
A上添加:

两台服务器
192.168.1.1(A)
192.168.1.2(B)
先保证这mysql的版本是一致的,参考

记录下二进制日志文件名和位置

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

1.在两台mysql上创建用户,设置权限
A上添加:

 

B上:

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

2.从库编辑my.cnf,把server-id改成不和主机相同的数字。

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

B上:

如果只想同步指定的数据库,可以添加  replicate-do-db = yourdatabase,

执行  #flush privileges; 更新数据库使用户生效。

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

同步几个就复制几个,把数据库名改了就好。

2.在/etc/my.cnf上进行相关配置

执行  #flush privileges; 更新数据库使用户生效。

[mysqld]

A B
server-id         = 1

2.在/etc/my.cnf上进行相关配置

server-id=2     #唯一

master-host     =192.168.1.2

A B
server-id         = 1

#设置要进行或不要进行主从复制的数据库名,同时也要在Master 上设定。

master-user     =sync_user

master-host     =192.168.1.2

replicate-do-db=数据库名1

master-pass     =123456

master-user     =sync_user

replicate-do-db=数据库名2

master-port     =3306

master-pass     =123456

replicate-ignore-db=数据库名1

master-connect-retry=60

master-port     =3306

replicate-ignore-db=数据库名2

replicate-do-db =db1

master-connect-retry=60

 

replicate-do-db =db2

replicate-do-db =db1

mysql> change master to
master_host=’192.168.1.100′,master_user=’slaveuser’,master_password=’123456′,
master_log_file=’mysql-bin.000008′,master_log_pos=337;

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

replicate-do-db =db2

mysql> start slave;

master-host     =192.168.1.1

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

mysql> show slave status\G;

master-user     =sync_user

master-host     =192.168.1.1

如果出现:

master-pass     =123456

master-user     =sync_user

Slave_IO_Running: Yes

master-port     =3306

master-pass     =123456