环境:
Mysql主机192.168.233.128
Mysql备机192.168.233.134
已经编译安装好Mysql。
实验步骤:
分别启动mysql
Servicemysql start
分别给mysql的root帐号设置密码
/usr/bin/mysqladmin-uroot password 'test111';
/usr/bin/mysqladmin-uroot password 'test222';
分别登录到mysql并给远程用户登录权限
mysql-uroot –ptest111;
grantall on *.* to root@'%' identified by 'test111;
grantall on *.* to root@'127.0.0.1' identified by 'test111';
flushprivileges;
备机同上,省略。
分别用Navicat远程连接mysql主机和备机
在mysql主机上随便建一个数据库
在test_databases下用下面查询语句建一个表
CREATETABLE `busi_model` (
`BUSI_MODEL_ID` bigint(20) NOT NULLAUTO_INCREMENT,
`BUSI_MODEL_NAME` varchar(100) DEFAULT NULL,
`INFO_QUERY_LINK` varchar(100) DEFAULT NULL,
PRIMARY KEY (`BUSI_MODEL_ID`)
)ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
这时会看到有一个busi_model表。
在mysql主机上
编辑主机mysql配置文件/etc/my.cnf,加入下面内容,原来有的就不用添加。
server-id = 1
binlog-do-db=test_databases
#replicate_ignore_table=btxccbs.com_log
slave-skip-errors=1062
log-bin=mysql-bin
log-slave-updates
第一条ID主、备机不能相同
第二条是要热备的库(可以添加多条,一条都不写是备份所以库),
第三条是不需要热备的表(也可以添加多条,我这里是注释掉)
重启mysql
Servicemysql restart
登录到mysql
mysql-u root -ptest111;
flushtables with read lock;
showmaster status;
将test_databases导出来
mysqldump-uroot -ptest111 --database test_databases > test_databases.sql
登录到mysql,解锁。
mysql-u root -ptest111;
unlocktables;
将test_databases.sql拷到备机的/usr/local下
scptest_databases.sql root@192.168.223.134:/usr/local
登录到mysql,给备机热备的权限。
mysql-uroot -ptest111;
GRANTREPLICATION SLAVE ON *.* TO 'backup'@'192.168.223.134' IDENTIFIED BY '123456';
GRANTFILE,SELECT,REPLICATION SLAVE ON *.* TO 'backup'@'192.168.74.134' IDENTIFIED BY'123456';
flushprivileges;
在mysql备机上
将test_databases.sql导入mysql
mysql-uroot -ptest222 < /usr/local/test_databases.sql
编辑/etc/my.cnf将下面这条ID改成非1整数(主机是1)
server-id = 2
重启mysql
servicemysql restart
登录到myql,设置同步
mysql-uroot -ptest222;
CHANGEMASTER TO MASTER_HOST='192.168.74.128',MASTER_USER='backup', Master_Port=3306,MASTER_CONNECT_RETRY=0,MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=1571;
slavestart;
showslave status\G;
在Navicat连上mysql主机,在之前建的busi_model表中随便插入些数据,并保存。
在mysql备机看到相同数据。·
现在是单向热备,下面同样的配置双向热备。
编辑备机mysql配置文件/etc/my.cnf,同样原来有的就不用再添加
server-id = 2
binlog-do-db=test_databases
#replicate_ignore_table=btxccbs.com_log
slave-skip-errors=1062
log-bin=mysql-bin
log-slave-updates
重启mysql
在备机上给主机备份的权限
mysql-uroot -ptest222;
GRANTREPLICATION SLAVE ON *.* TO 'backup'@'192.168.223.128' IDENTIFIED BY '123456';
GRANTFILE,SELECT,REPLICATION SLAVE ON *.* TO 'backup'@'192.168.223.128' IDENTIFIEDBY '123456';
flushprivileges;
showmaster status;
在主机上
mysql-uroot –ptest111;
CHANGEMASTER TO MASTER_HOST='192.168.223.134',MASTER_USER='backup', Master_Port=3306,MASTER_CONNECT_RETRY=0,MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=107;
slavestart;
showslave status\G;
在备机插入数据
在主机查看