日期:2014-05-16 浏览次数:20662 次
配置Mysql server 5.5 的双机备份,也就是master-slave模式。本例子还是一个多database复制的情况。
现在有两个database在同一台mysql server,也就是master,各自有自己的user访问和操作,用于不同的应用程序。这两个database都要通过replication配置,实时复制到另一台mysql server上,也就是slave。
配置步骤:
1. 从master上到处现有的数据
mysqldump -R -E -uroot -p ADB > masteradb.sql;
mysqldump -R -E -uroot -p BDB > masterbdb.sql;
2. 为master和slave定制配置文件/etc/my.cnf,然后启动mysql
vi /etc/my.cnf
###详细内容见附录
service mysql restart
3. 在slave上创建database.
create database ADB;
create database BDB;
4. 在master和slave上配置user和privilege;
GRANT ALL PRIVILEGES ON ADB.* TO usera@`%` IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON ADB.* TO usera@`localhost` IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON BDB.* TO userb@`%` IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON BDB.* TO userb@`localhost` IDENTIFIED BY 'pass' WITH GRANT OPTION;
flush privileges;
5. 在master上配置用于数据复制的user和privilege;
grant SUPER ON *.* TO 'auser'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
grant SUPER ON *.* TO 'buser'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT SELECT ON mysql.proc TO 'auser'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT SELECT ON mysql.proc TO 'buser'@'%' IDENTIFIED BY 'pass' WITH GRANT OPTION;
GRANT REPLICATION SLAVE ON *.* TO repluser IDENTIFIED BY 'pass';
flush privileges;
6. 在master上运行下列命令,得到master的状态,包含binlog的文件名和当前位置
mysql> show master status;
+------------------+----------+--------------------------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------------------------+------------------+
| mysql-bin.000001 | 000173| ADB,BDB | |
+------------------+----------+--------------------------------+------------------+
1 row in set (0.02 sec)
7. 在slave配置复制来源,包括hostname,user,password,binlog文件名,位置。
CHANGE MASTER TO MASTER_HOST='10.224.106.225', MASTER_USER='repluser', MASTER_PASSWORD='pass', master_log_file='mysql-bin.000001', master_log_pos=173;
start slave;
8. 运行下列命令查看slave的当前状态。
show slave status\G
结果出现
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示数据同步复制已经成功运行。
提示:如果show slave status\G 出现了错误,运行下列命令跳过,在重启slave
SET GLOBAL SQL_SLAVE_SKIP_COUNTER =100;start slave;
show slave status\G;
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER =0;start slave;
附录:
master my.cnf配置
[client] port = 3306 socket = /var/lib/mysql/mysql.sock [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock skip-external-locking key_buffer = 384M max_allowed_packet = 32M table_open_cache = 5120 key_buffer_size = 64M sort_buf