Mysql5一主库两从库同步配置

一、 安装包选择
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 )建立用户
grant  replication  slave .  *.*  to  [email protected]  identified by ‘123456’;
grant  replication  slave .  *.*  to  [email protected]  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=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” 博客,谢绝转载!

你可能感兴趣的:(数据库,mysql,职场,休闲)