硬件准备:
MysqlserverA:192.168.1.1
MysqlserverB:192.168.1.2
共同使用的数据库:
db1
软件安装:
1.
两台服务器安装
centos/rhel 5
1.
Yum install mysql
注意
mysql
数据库的版本,两个数据库版本要相同,或者
slave
比
master
版本低!
进行单项同步配置
一、主服务器
master
配置
1.
配置
Master
的
my.cnf
文件
Cp /usr/share/doc/mysql-server-5.0.22/my-medium.cnf /etc/my.cnf
binlog-do-db=db1
|
二进制需要同步的数据库名
|
server-id = 1
|
本机数据库
ID
标示为主
|
log-bin=/var/log/mysql/updatelog
|
#
设定生成
log
文件名
|
binlog-ignore-db=mysql
|
#
避免同步
mysql
用户配置,以免不必要的麻烦
|
1.
进入
mysql
命令行,为
slave
用户添加同步专用权限
GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'repl'@'1
0.10.91.240
' IDENTIFIED BY '123'
;
|
##
给与从服务器用户
repl
的同步权限
|
Grant ALL PRIVILEGES ON *.* TO hk@'%' IDENTIFIED BY '123456';
|
#
如果需要的话添加管理用户
|
Flush privileges;
|
#
刷新权限
|
1.
停止数据库,并将本地数据库打包拷贝到从数据库上
Service mysqld stop
|
停止服务
|
Tar -cvf /root/db1.tar /var/lib/mysql/db1
|
备份主服务器数据库
|
Scp /root/db1.tar root@192.168.1.2:/root
|
远程拷贝到从服务器
|
Service mysqld start
|
启动主服务器
mysql
服务
|
二、同步
slave
从服务器配置
1.
配置
slave
服务器
my.cnf
文件
Cp /usr/share/doc/mysql-server-5.0.22/my-medium.cnf /etc/my.cnf
将以下配置启用:
server-id = 2
|
从服务器
ID
号,不要和主
ID
相同
|
master-host = 192.168.1.1
|
指定主服务器
IP
地址
|
master-user = repl
|
制定在主服务器上可以进行同步的用户名
|
master-password = 123
|
密码
|
master-port = 3306
|
同步所用的端口
|
master-connect-retry=60
|
断点重新连接时间
|
replicate-ignore-db=mysql
|
#
屏蔽对
mysql
库的同步
|
replicate-do-db=db1
|
同步数据库名称
|
1.
装载主服务器数据库
Cd /var/lib/mysql
|
进入数据库库文件主目录
|
Cp /root/db1.tar ./
|
拷贝主数据库的
tar
文件到当前目录
|
Tar -xvf db1.tar
|
解包
|
Service mysqld start
|
启动从数据库服务
|
三、查询配置
Show Slave status:此处Slave_IO_Running ,Slave_SQL_Running 都应该是yes,表示从库的I/O,Slave_SQL 线程都正确开启.更多详细信息以及参数设置,请参考MySQL 5.0 Manual手册.
在主服务器A MySQL命令符下:
show master status;
显示
(
不同主机结果不同
)
+------------------+----------+-------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+-------------------+------------------+
| updatelog.000028 | 313361 |db1 | mysql |
+------------------+----------+-------------------+------------------+
(同步之前如果怀疑主从数据不同步可以采取:上面冷备份远程拷贝法或者在从服务器上命令行同步方 法)
在从服务器执行MySQL命令下:
slave stop;
|
先停止
slave
服务
|
CHANGE MASTER TO MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=313361;
|
根据上面主服务器的
show master status
的结果,进行从服务器的二进制数据库记录回归,达到同步的效果
|
slave start;
|
启动从服务器同步服务
|
用show slave status\G;看一下从服务器的同步情况
·
Slave_IO_Running: Yes
·
Slave_SQL_Running: Yes
如果都是yes,那代表已经在同步
往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是replicaion本身问题,再检查一下操 作步骤!
注意:
进行双向同步配置
一、先修改原
slave
服务器配置
1.
配置原
slave
服务器
my.cnf
文件(红字为添加内容)
server-id = 2
|
从服务器
ID
号,不要和主
ID
相同
|
master-host = 192.168.1.1
|
指定主服务器
IP
地址
|
master-user = repl
|
制定在主服务器上可以进行同步的用户名
|
master-password = 123
|
密码
|
master-port = 3306
|
同步所用的端口
|
master-connect-retry=60
|
断点重新连接时间
|
replicate-ignore-db=mysql
|
屏蔽对
mysql
库的同步
|
replicate-do-db=db1
|
同步数据库名称
|
log-bin=/var/log/mysql/updatelog
|
设定生成log文件名
|
binlog-do-db=db1
|
设置同步数据库名
|
binlog-ignore-db=mysql
|
避免同步mysql用户配置,以免不必要的麻烦
|
1.
重新启动
mysql
服务,创建一个同步专用账号
Service mysqld restart
|
重新启动服务
|
GRANT REPLICATION SLAVE,REPLICATION CLIENT,RELOAD,SUPER ON *.* TO 'repl'@'192.168.1.1' IDENTIFIED BY '123'
;
|
进入命令行。并为原
master
服务器创建一个同步专用账号
|
Flush privileges;
|
刷新
|
二、修改原master主服务器的my.cnf,添加如下内容(红色为添加部分)
binlog-do-db=db1
|
二进制需要同步的数据库名
|
server-id = 1
|
本机数据库
ID
标示为主
|
log-bin=/var/log/mysql/updatelog
|
#
设定生成
log
文件名
|
binlog-ignore-db=mysql
|
#
避免同步
mysql
用户配置,以免不必要的麻烦
|
master-host = 192.168.1.2
|
设置从原
slave
数据库同步更新
|
master-user = repl
|
更新用户
|
master-password = 123
|
密码
|
master-port = 3306
|
端口
|
replicate-ignore-db=mysql
|
不需要更新的库
|
replicate-do-db=db1
|
需要更新的库
|
Service mysqld restart
|
重新启动库
|
在
slave
服务器执行MySQL命令符下:
show master status;
看看有无作为主服务器的信息
+------------------+----------+-------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+-------------------+------------------+
| updatelog.000028 | 313361 |db1 | mysql |
+------------------+----------+-------------------+------------------+
在
master
服务器执行MySQL命令下:
slave stop;
|
先停止
slave
服务
|
CHANGE MASTER TO
MASTER_HOST='192.168.1.2',MASTER_USER='repl
'
,MASTER_PASSWORD='
123'
,MASTER_PORT=3306,MASTER_LOG_FILE='updatelog.000028',MASTER_LOG_POS=313361;
|
根据上面主服务器的
show master status
的结果,进行从服务器的二进制数据库记录回归,达到同步的效果
|
slave start;
|
启动从服务器同步服务
|
转载于:https://blog.51cto.com/zhangziqiang/186807