mysql M/S配置小记(一)

2014-11-24 16:31:15 · 作者: · 浏览: 2
mysql M/S配置小记
昨天做了MYSQL 主从服务器同步配置。今天早上起了个大早,到现在还是睡意朦胧。。。
现在写下整个同步过程及需要注意的地方
目前情况:
1.系统版本都是rhel5 mysql版本相同
2.主服务器正在运行,不能停止。
3.主服务器IP为:10.0.0.2
从服务器IP为:10.0.0.3
4.从服务器MSYQL slave 为停止状态
配置过程:
1、为了安全起见,建同步账号
mysql> GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
本例: GRANT REPLICATION SLAVE ON *.* TO mysqlms@10.0.0.3 IDENTIFIED BY mysqlslave;
2、锁表
mysql > FLUSH TABLES WITH READ LOCK;
注意:为了保证FLUSH TABLES语句让读锁定保持有效。(如果退出客户程序,锁被释放)。建立新的SSH连接,然后对主服务器上的数据进行快
照。
3、建立快照
tar -cvf /tmp/mysql-snapshot.tar ./data
数据库大怎么办?用 mysqldump导出。
本例:tar -cvf /tmp/mysql-snapshot.tar ./data/newnew --其中的一个数据库,其它的无关紧要。
4、记下file pos值
当FLUSH TABLES WITH READ LOCK所置读锁定有效时,读取主服务器上当前的二进制日志名(file)和偏移量值(pos):
mysql > SHOW MASTER STATUS;
+---------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+---------------+----------+--------------+------------------+
File列显示日志名,而Position显示偏移量。在该例子中,二进制日志值为mysql-bin.003,偏移量为73。记录该值。以后设置从服务器时需要
使用这些值。它们表示复制坐标,从服务器应从该点(也可以是任何点)开始从主服务器上进行新的更新。
5、解锁
mysql > UNLOCK TABLES;
这时也可以使用mysql > SHOW MASTER STATUS; 查看pos在不断的变化。
6、配置主从服务器my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
[mysqld]
log-bin=mysql-bin
server-id=2
7、将主服务器快照信息COPY至从服务器,重启从服务器MYSQL,并配置MASTER
# scp /tmp/mysql-snapshot.tar root@10.0.0.3:/root
# 在从服务器解压,覆盖data,注意权限
#从服务器操作 service mysqld restart
# mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
-> MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;
本例:
# mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.0.2',
-> MASTER_USER='mysqlms',
-> MASTER_PASSWORD='mysqlslave',
-> MASTER_LOG_FILE='mysql-bin.003',
-> MASTER_LOG_POS=73;
----这些信息在主服务器用mysql > SHOW MASTER STATUS;查看得知。
8、验证配置是否正确
登录从服务器输入如下命令:
mysql> show slave status\G
会得到类似下面的列表:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
9、启动同步
从服务器
mysql> start slave;
10、再次验证同步
在主服务器建个表,在从服务器查看是否也有。
附:
一些错误信息的处理,主从服务器上的命令,及状态信息。
在从服务器上使用show slave status\G
Slave_IO_Running,为No,
则说明IO_THREAD没有启动,请执行start slave io_thread
Slave_SQL_Running为No
则复制出错,查看Last_error字段排除错误后执行start slave sql_thread
查看Slave_IO_State字段空 //复制没有启动
Connecting to master//没有连接上master
Waiting for master to send event//已经连上
主服务器上的相关命令:
show master status
show slave hosts
show logs
show binlog events
purge logs to 'log_name'
purge logs before 'date'
reset master(老版本flush master)
set sql_log_bin=
从服务器上的相关命令:
slave start
slave stop
SLAVE STOP IO_THREAD //此线程把master段的日志写到本地
SLAVE start IO_THREAD
SLAVE STOP SQL_THREAD //此线程把写到本地的日志应用于数据库
SLAVE start SQL_THREAD
reset slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER
load da