一、
安装包选择
mysql-5.0.67.tar.gz
(安装在主库机:
server1
)
mysql-5.0.45.tar.gz
(安装在从库机:
server2
)
MySQL-client-community-5.0.67-0.sles10.i586.rpm
、
MySQL-server-community-5.0.67-0.sles10.i586.rpm
(安装在从库机:
server3
)
最好使用同一版本的安装包。在这里只是想试验一下。
二、安装环境
192.168.100.188 RHEL5.1
数据文件的存放位置
/usr/local/mysql5/var
待同步数据库
juwang
、
test
192.168.100.39 CentOS5.2 /usr/local/mysql/var
192.168.100.15 OpenSuSE11 /var/lib/mysql
在
rpm
包在
suse
下的
mysql
服务启动:
/etc/init.d/mysql start
在源码包安装在
CentOS
、
RHEL5.1
中
mysql
服务分别为:
/usr/local/mysql/bin/mysqld_safe �Cuser=mysql &
/usr/local/mysql/bin/mysqld_safe �Cuser=mysql &
停止服务:
bin/mysqladmin shutdown
三、主服务器配置
(
1
)建立用户
flush privileges;
(
2
)修改
my.cnf
vi /etc/my.cnf
server-id = 1
log-slave-updates
binlog-do-db=juwang
ç
关于复制的数据库一定要分开写。不能写成
binlog-do-db=juwang,test
。这是无效的,两个数据库一个都不会复制。
binlog-do-db=test
binlog-ignore-db=mysql
(
3
)
锁主库表
mysql> FLUSH TABLES WITH READ LOCK;
(
4
)
显示主库信息
SHOW MASTER STATUS;
(
5
)
另开一个终端,打包主库
cd /usr/local/mysql5/var
tar czvf juwang.tar.gz juwang
四、设置
SLAVE
(
1
)传输主库压缩包、解压
cd /usr/local/mysql/var
scp /usr/local/mysql5/var/juwang.tar.gz .
tar xf juwan.tar.gz
(
2
)解锁主库表
mysql> UNLOCK TABLES;
(
3
)
查看修改
juwang
文件夹权限
# chown mysql:mysql juwang �CR
(
4
)
修改
my.cnf
(
CentOS
)
server-id=2
master-host=192.168.100.188
master-user=slave1
master-password=123456
master-port=3306
replicate-do-db=juwang
replicate-do-db=test
log-slave-updates
修改
my.cnf
(
SuSe
)
server-id=3
ç
千万别和其它机器的
server-id
号写重名了。
master-host=192.168.100.188
master-user=slave2
master-password=123456
master-port=3306
replicate-do-db=juwang
replicate-do-db=test
log-slave-updates
(
5
)
验证连接
MASTER
# mysql -h192.168.100.188 �Cuslave1 �Cp123456
mysql> show grants for [email protected];
# mysql -h192.168.100.188 �Cuslave2 �Cp123456
mysql> show grants for [email protected];
(
6
)
在
SLAVE
上设置同步
设置连接
MASTER MASTER_LOG_FILE
为主库的
File
,
MASTER_LOG_POS
为主库的
Position
============================
mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.188',MASTER_USER='slave',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000005',MASTER_LOG_POS=98;
============================
(
7
)
启动
SLAVE
服务
mysql> slave start;
查看
SLAVE
状态
mysql> SHOW SLAVE STATUS\G;
其中
Slave_IO_Running
和
Slave_SQL_Running
两列的值都为
"Yes"
,表明
Slave
的
I/O
和
SQL
线程都在正常运行。
到此主从库搭建成功。
在配置过程中出现:
Slave_SQL_Running
的值都为
"No"
mysql> show slave status\G;
Slave_IO_Running: Yes
Slave_SQL_Running: No
Last_Errno: 1062
原因:
1.
程序可能在
slave
上进行了写操作
。(我确定这样操作过。)
2.
也可能是
slave
机器重起后,事务回滚造成的
.
解决办法
I
:
1.
首先停掉
Slave
服务:
slave stop
到主服务器上查看主机状态:
记录
File
和
Position
对应的值。
3.
到
slave
服务器上执行手动同步:
mysql> show master status;
在从库机上操作如下:
注意:
/etc/init.d/mysql start
(
SuSe
中),应这样启动服务:
/etc/init.d/mysql --skip-slave-start
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='123456',
> master_port=3306,
> master_log_file='mysql-bin.000006',
> master_log_pos=98;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次查看
slave
状态发现:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0
解决办法
II
:
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
解决办法
III
:
重新获取主库上的数据库相关物理文件,然后,再拷贝到从库的相应的位置。重复上述有关操作。
在启动从库机
mysql
服务器时出现了,
启动
mysqld_safe
的时候遇到这个错误:
Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
将
data
删除之后
mysql_install_db --user=mysql
就行了
本文出自 “oraclewhboy” 博客,谢绝转载!