一、安装包选择
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 –user=mysql &
/usr/local/mysql/bin/mysqld_safe –user=mysql &
停止服务:bin/mysqladmin shutdown
三、主服务器配置
(1)建立用户
grant replication slave . *.* to slave1@192.168.100.39 identified by '123456';
grant replication slave . *.* to slave2@192.168.100.15 identified by '123456';
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=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;
# chown mysql:mysql juwang –R
(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
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
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
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
log-slave-updates
(5)验证连接MASTER
# mysql -h192.168.100.188 –uslave2 –p123456
mysql> show grants for slave1@192.168.100.39;
mysql> show grants for slave1@192.168.100.39;
(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;
============================
============================
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状态
查看SLAVE状态
mysql> SHOW SLAVE STATUS\G;
在配置过程中出现: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
没有评论:
发表评论