准备工作:
在两台服务器上安装同版本mysql数据库;
确保mysql主从服务器之间的数据库端口防火墙互相打开;
确保主从数据库账户一致性(主从切换使用),否则将操作失败;
确保mysql账户对my sql数据库 目录有“可读写”权限非“可写”权限 chown -R mysql:mysql /path,
确保不出意外,最好删除 mysql 之前陈旧的mysql-bin、mysql日志,然后重启mysql;
查看版本:mysql> status \G;
确保主从数据库账户一致性(主从切换使用),否则将操作失败;
确保mysql账户对my sql数据库 目录有“可读写”权限非“可写”权限 chown -R mysql:mysql /path,
确保不出意外,最好删除 mysql 之前陈旧的mysql-bin、mysql日志,然后重启mysql;
查看版本:mysql> status \G;
一、在主库创建用户
mysql>create user backup; //创建新用户
mysql> GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.76.%' IDENTIFIED BY 'mysql'; //repl用户必须具有REPLICATION SLAVE权限,除此之外没有必要添加不必要的权限,密码为mysql。说明一下192.168.0.%,这个配置是指明repl用户所在服务器,这里%是通配符,表示192.168.0.0-192.168.0.255的Server都可以以repl用户登陆主服务器。当然你也可以指定固定Ip。
二、修改主数据库的配置文件/etc/my.cnf (其他参数保持,以下为新增)
[mysqld]
server-id=1 //[必须]默认是1,一般取IP最后一段
log-bin=mysql-bin.log // [主从必须]启用二进制日志,默认在mysql路径下
sync_binlog=1 //为了保证事务InnoDB复制设置的最大可能的耐受性和一致性,应在主服务器使用
innodb_flush_log_at_trx_commit=1 // 同上
三、修改从数据库的配置文件/etc/my.cnf
[mysqld]
port=3306
server-id=2 //从库配置编号
bing-address=0.0.0.0 //[可选]意思是允许所有 机器 服务器安全起见可设置为指定的服务器IP地址 如 116.128.1.10等
log-bin=mysql-bin.log // [主从必须]启用二进制日志,默认在mysql路径下
binlog-do-db =new_test (要记录的数据库,多个可换行多次设置)
replicate-do-db =new_test (要复制的数据库,多个可换行过个设置)
binlog-ignore-db=mysql //不对mysql库进行日志记录操作 如下意思雷同
binlog-ignore-db=test
replicate-ignore-db=test //不对test进行复制操作 如下意思雷同
replicate-ignore-db=mysql
binlog-ignore-db=mysql //不对mysql库进行日志记录操作 如下意思雷同
binlog-ignore-db=test
replicate-ignore-db=test //不对test进行复制操作 如下意思雷同
replicate-ignore-db=mysql
四、重启两台服务器的mysql
service mysql restart五、登录主服务器的mysql,查询master的状态(可在phpmyadmin 中执行次操作)
mysql>show master status;+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 120 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
六、配置从服务器Slave(5.1以后的版本不支持在my.cnf中配置主库信息了,如下用命令配置):
mysql>change master to master_host='xx.xx.xx.xx', master_port=3306, master_user='backup', master_password='yourpasswd', master_log_file='mysql-bin.000001',master_log_pos=120 //注意不要断开,master_port为mysql服务器端口号(无引号),master_user为执行同步操作的数据库账户,“120”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)。(此处可在从服务器phpmyadmin中用sql语句操作)
Mysql>start slave; //启动从服务器复制功能(可在phpmyadmin中执行该SQL语句)
如果需要修改:
1.Slave:
stop slave;
2.Master: flush logs
3.Master: show master status; — take note of the master log file and master log position
4.Slave: CHANGE MASTER TO MASTER_LOG_FILE=’log-bin.00000X′, MASTER_LOG_POS=106;
5.Slave: start slave ;
2.Master: flush logs
3.Master: show master status; — take note of the master log file and master log position
4.Slave: CHANGE MASTER TO MASTER_LOG_FILE=’log-bin.00000X′, MASTER_LOG_POS=106;
5.Slave: start slave ;
修改完了一定记得要启动start slave,否则用show的时候看到的是旧的配置
七、检查从服务器复制功能状态:
mysql> show slave status\G (可在从服务器phpmyadmin中执行“show slave status” SQL语句)*************************** 1. row ***************************
……………………(省略部分)
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须YES
……………………(省略部分)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
以上操作过程,主从服务器配置完成。
八、测试是否正常复制,在主库创建文件,从库更新
Refs:
http://www.cnblogs.com/xiao-yu/archive/2011/06/14/2080842.html 清晰但版本过老,my.cnf已经不能写入master信息了