首页 > 代码库 > mysql主从同步

mysql主从同步


 

注意:做mysql主从同步之前,主、从数据库的结构必须相同,否则同步不成功

 

 

环境:
主从服务器上的MySQL数据库版本同为5.1.34
主机IP192.168.1.200
从机IP192.168.1.201

 

现在主库上创建库和表做测试用

Mysql> create database test2;

Mysql> use test2;

Mysql> create table blog_user

(

  user_Namechar(15) not null check(user_Name !=‘‘),

  user_Passwordchar(15) not null,

  user_emialvarchar(20) not null unique,

  primary key(user_Name)         

 

)engine=innodbdefault charset=utf8 auto_increment=1;

 

一.  MySQL主服务器配置

1.编辑配置文件/etc/my.cnf

[mysqld]              //必须在【mysqld】这个模块下

server-id=1            //主从服务器的server-id 不能相同

log-bin=mysql-bin       //开启二进制同步日志

binlog-do-db=test2      //需要同步的数据库

binlog-do-db=test1      //需要同步的数据库

binlog-ignore-db=mysql  //不需要同步的数据库

 

   2.建立用户
mysql> grant replication slave on *.* to 
wenqiang@192.168.1.201identified by ‘123456′;

mysql>flush privileges;    //刷新权限
 //
允许用户wenqiang 使用密码:123456 ,从192.168.1.201这台从服务器登陆主服务器

可在Slave上做连接测试: mysql -h 192.168.1.200 -u wenqiang –p

做完这些重启mysql

3.锁主库表
mysql> FLUSH TABLES WITH READ LOCK;

 

4.显示主库信息

mysql> show master status;

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

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB|

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

| mysql-bin.000007 |      371 | test2        | mysql            |

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

1 row in set (0.00 sec)

 

5.另开一个终端,打包主库(需要同步的数据库目录)

cd /var/lib/mysql       #mysql库目录

tar–zcvf  test2.tar.gz  test2/

 

 

二.  MySQL从服务器配置

1、  将主数据库的test2.tar.gz传输到从服务器的 /var/lib/mysql/

Yum安装scp

yum install openssh-clients  scp*

Scp test2.tar.gz 192.168.1.201:/var/lib/mysql/

2、  解包到从服务器的mysql目录下

Tar –zxvftest2.tar.gz

3、  编辑/etc/my.cnf

[mysqld]                //必须在【mysqld】这个模块下

Server-id=2

log-bin=mysql-bin                  //开启二进制日志
master-host=192.168.0.1       //
主服务器ip
master-user=wenqiang          //
登陆主服务器用户
master-password=123456      //
登陆主服务器密码
master-port=3306                  //
端口号
replicate-do-db=test2             #
需要备份的数据库名
replicate-ignore-db=mysql       #
忽略的数据库
master-connect-retry=60      #
如果从服务器发现主服务器断掉,重新连接的时间差

5、SLAVE上设置同步

mysql> slave stop;                 //关闭slave 服务
mysql> CHANGE MASTER TO MASTER_HOST=‘192.168.1.200‘,MASTER_USER=‘wenqiang‘,MASTER_PASSWORD=‘123456‘,MASTER_LOG_FILE=‘mysql-bin.000007‘,MASTER_LOG_POS=371;

#使用用户wenqiang登陆主服务器192.168.1.200,并复制mysql-bin.000007371

6、启动SLAVE服务

mysql> slave start;

7、查看SLAVE状态

mysql> SHOW SLAVE STATUS\G;

其中 Slave_IO_Running  Slave_SQL_Running 两列的值都为 "Yes",表明 Slave  I/O  SQL 线程都在正常运行

8、解锁主库表

mysql> UNLOCK TABLES;

到此主从库搭建成功。可以在主库上插入数据测试同步是否正常。

 

双向同步不反过来做就行