Contents
服务配置
主服务器Master 从服务器Slave 同步数据 启动复制 问题
服务配置
/etc/mysql/my.cnf
主服务器Master
IP:61.164.186.242
重启生效
1
/etc/init.d/mysql restart
从服务器Slave
IP:61.164.186.241/246
6
relay_log = mysql-relay-bin
12
slave-skip-errors = 1062
同步数据
将master数据库导出为master.sql
1
mysqldump --single-transaction --all-databases --master-data=1 -hlocalhost -uroot -poP05_1ep > master.sql
复制master.sql到slave服务器
1
gzip
-c master.sql |
ssh
root@61.164.186.241
"gunzip -c - >master.sql"
分别到slave服务器上执行导入
1
mysql -uroot -poP05_1ep < master.sql
由于备份导入的是整个数据库,所以主从数据库的数据完全一致,包括mysql用户名密码都是一致的。
同步/etc/mysql/debian.cnf 中的管理密码;否则会导致/etc/init.d/mysql restart失败!系统找不到启动后的mysql进程。
1
scp
/etc/mysql/debian.cnf root@61.164.186.241:/etc/mysql/debian.cnf
重启生效
1
/etc/init.d/mysql restart
把上面的所有命令用管道一次执行,哈哈^_^,直接将本服务器数据同步到另外一台服务器!!!
1
mysqldump --single-transaction --all-databases --master-data=1 -hlocalhost -uroot -poP05_1ep |
gzip
-c - |
ssh
root@61.164.186.241
"gunzip -c - | mysql -uroot -poP05_1ep"
启动复制
登录slave
设置master
1
change master to master_host=
'61.164.186.242'
,master_user=
'root'
,master_password=
'oP05_1ep'
;
开始复制
查看状态
1
Slave_IO_State: Waiting for master to send event
2
Master_Host: 61.164.186.242 #设置的master服务器
6
Master_Log_File: mysql-bin.000004
7
Read_Master_Log_Pos: 100764106 #同步读取二进制日志的位置,大于等于>=Exec_Master_Log_Pos
8
Relay_Log_File: mysqld-relay-bin.000010
9
Relay_Log_Pos: 100764251
10
Relay_Master_Log_File: mysql-bin.000004
16
Replicate_Ignore_Table:
17
Replicate_Wild_Do_Table:
18
Replicate_Wild_Ignore_Table:
22
Exec_Master_Log_Pos: 100764106 #同步执行二进制日志的位置,小于等于<=Read_Master_Log_Pos
23
Relay_Log_Space: 100764450
33
Seconds_Behind_Master: 0 #从服务器数据比主服务器延迟多少秒?一般是0
34
Master_SSL_Verify_Server_Cert: No
问题
修改mysql配置,导致mysql无法启动? 答:请启用mysql错误日志,log_error = “/var/log/mysql/mysql.err”,检查错误日志内容。 [ERROR] /usr/sbin/mysqld: Table ‘./web_td/trick_rates’ is marked as crashed and should be repaired? 答:编辑配置,在[mysqld]段内加入,myisam-recover = BACKUP,FORCE,强制修复表 start slave失败,提示relay_log错误? 答:直接注释掉:relay_log = mysql-relay-bin gzip -c -,gunzip -c -是什么意思? 答:一般来说命令是 gzip -c /file, – 是标准输入stdin;“gzip -c -”的意思是:读取标准输入(-),gzip后,输出到标准输出(-c)