mysql db 复制_mysql DB复制同步(replication)

mysql  DB复制同步(replication)

系统环境:rhel6.0 x86-64

master:192.168.0.1

slave: 192.168.0.2

a(db1)---->b(db1)

b(db2)---->a(db2)

a-->b-->c-->d-->e

yum install mysql mysql-server -y

---->mysql单项复制

master server配置

####创建同步账户,并给予权限

mysql> grant replication slave,reload,super on *.* to test@'192.168.0.2' identified by 'test';

Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

####配置master server 的/etc/my.cnf文件,添加黄色部分

vim /etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

server-id=1

log-bin=mysql-bin

binlog-do-db=test

binlog-ignore-db=mysql

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

####启动mysql服务

/etc/init.d/mysqld restart

####检测

在master上用下面命令测试

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000001 |      106 | test         | mysql            |

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

1 row in set (0.00 sec)

####配置slave server 的/etc/my.cnf的文件

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

server-id=2                               #

master-host=192.168.0.1            #

master-user=test                    #

master-password=test                  #

master-port=3306               ##可缺省

master-connect-retry=60          ##可缺省

replicate-ignore-db=mysql      #

replicate-do-db=test         #

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

在slave上执行以下命令:

mysql> slave stop;

Query OK, 0 rows affected (0.00 sec)

mysql> change master to master_host='192.168.0.1', master_user='test',

master_password='test', master_log_file='mysql-bin.000001',

master_log_pos=98;

Query OK, 0 rows affected (0.28 sec)

mysql> slave start;

Query OK, 0 rows affected (0.00 sec)

####开启服务

/etc/init.d/mysqld start

mysql> show slave status\G;

....

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Replicate_Do_DB: test

Replicate_Ignore_DB: mysql

Replicate_Do_Table:

....

注:如果都是yes,表示从库的Slave_IO,Slave_SQL线程都正确开启.表明数据库正在同步

----> 若上面的Slave_IO,Slave_SQL状态为NO,则执行如下操作,再查看

cd /var/lib/mysql

rm -f master.info

rm -f mysqld-relay-bin.*

rm -f relay-log.info

/etc/init.d/mysqld stop

/etc/init.d/mysqld start

####测试,在master创建表,slave是否同步

---->master server

mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| test               |

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

3 rows in set (0.00 sec)

mysql> use test;

Database changed

mysql> show tables;

Empty set (0.00 sec)

mysql> create table westos (

-> username varchar(25) not null,

-> password varchar(25) not null);

Query OK, 0 rows affected (0.08 sec)

mysql>show tables;

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

| Tables_in_test |

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

| westos         |

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

1 row in set (0.00 sec)

---->slave server

mysql> show databases;

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

| Database           |

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

| information_schema |

| mysql              |

| test               |

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

3 rows in set (0.01 sec)

mysql>use test;

Database changed

mysql> show tables;

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

| Tables_in_test |

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

| westos         |

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

1 row in set (0.00 sec)

mysql> desc westos;

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

| Field    | Type        | Null | Key | Default | Extra |

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

| username | varchar(25) | NO   |     | NULL    |       |

| password | varchar(25) | NO   |     | NULL    |       |

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

2 rows in set (0.00 sec)

---->mysql双向复制

双向同步的mysql server是互为master and slave

####在原slave server操作

vim /etc/my.cnf添加黄色部分的3行

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

server-id=2

log-bin=mysql-bin

binlog-do-db=test

binlog-ignore-db=mysql

master-host=192.168.0.1

master-user=test

master-password=test

replicate-ignore-db=mysql

replicate-do-db=test

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

注:添加上面3句后,slave server也就成为了可以同步的主机

重启mysql服务: /etc/init.d/mysqld restart

mysql> grant replication slave,reload,super on *.* to test@'192.168.0.1' identified by 'test';

Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

---->在master测试是否可以登录远程slave上面的数据库

[root@server1 ~]# mysql -utest -ptest -h 192.168.0.2

OK!!!!登录成功!

####在master server操作

vim /etc/my.cnf添加黄色字体部分

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

server-id=1

log-bin=mysql-bin

binlog-do-db=test

binlog-ignore-db=mysql

master-host=192.168.0.4

master-user=test

master-password=test

replicate-do-db=test

replicate-ignore-db=mysql

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

重启mysql服务

/etc/init.d/mysqld restart

---->记录原slave上File  mysql-bin.000001 and 106

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

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

| mysql-bin.000001 |      106 | test         | mysql            |

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

1 row in set (0.00 sec)

---->在原master server

mysql> slave stop;

mysql> change master to master_host='192.168.0.2',master_user='test',master_password='test',master_log_file='mysql-bin.000001',master_log_pos=106;

Query OK, 0 rows affected (0.22 sec)

mysql> slave start;

mysql > show slave status\G;

....

Relay_Master_Log_File: mysql-bin.000001

Slave_IO_Running: Yes                       #IO读写正常

Slave_SQL_Running: Yes                       #监听正常

Replicate_Do_DB: test

Replicate_Ignore_DB: mysq

....

####测试,在原slave server创建表,查看原master server是否同步

----> slave server 创建表

mysql> create table redhat(

-> username varchar(25) not null,

-> password varchar(25) not null);

Query OK, 0 rows affected (0.07 sec)

mysql> show tables;

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

| Tables_in_test |

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

| redhat         |

| westos         |

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

2 rows in set (0.00 sec)

---->master查看是否同步

mysql> use test;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

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

| Tables_in_test |

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

| redhat         |

| westos         |

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

2 rows in set (0.00 sec)

mysql> desc redhat;

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

| Field    | Type        | Null | Key | Default | Extra |

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

| username | varchar(25) | NO   |     | NULL    |       |

| password | varchar(25) | NO   |     | NULL    |       |

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

2 rows in set (0.00 sec)

GOOD LUCK!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值