首页 > 代码库 > mysql主从同步
mysql主从同步
注意:做mysql主从同步之前,主、从数据库的结构必须相同,否则同步不成功
环境:
主从服务器上的MySQL数据库版本同为5.1.34
主机IP:192.168.1.200
从机IP:192.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.201’identified 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.000007和371
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;
到此主从库搭建成功。可以在主库上插入数据测试同步是否正常。
双向同步不反过来做就行