环境(虚拟机):
CentOS2.6 64位,mysql5.5
基础环境说明:
主数据库IP 标记为主机A:192.168.160.244
从数据库IP 标记为主机B:192.168.160.245
端口号:3306
数据库用户名:root
数据库密码:china
测试的数据库名:mybase(里面一个表mybase,有两个字段id和name)
初装mysql后root需要初始化一下密码,拥有对库表的操作权限
主机A要确定下是否关闭防火墙;
清空防火墙规则,语句:
iptables -F
service iptables save
两台主机需要通过ping命令先确定是否可以连通。
核心操作步骤:
1.登录主机A,进入mysql,在mysql下执行:
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.160.245' IDENTIFIED BY '123456'
2.打开主机A的my.cnf(一般在/etc/my.cnf,由于安装方式的不同,有可能一开始没有这个文件,去mysql的安装目录,本教程中实际是在/usr/share/mysql文件下,复制my-medium.cnf到/etc/my.cnf并改名字)输入如下:
server-id = 244 #主机标示,整数
log_bin = /var/log/mysql/mysql-bin.log #确保此文件可写
read-only =0 #主机,读写都可以
binlog-do-db =mybase #需要备份数据,多个写多行
binlog-ignore-db =mysql #不需要备份的数据库,多个写多行
上述“确保此文件可写”需要命令执行,打开这个文件夹权限,需要先进入mysql的目录后,执行:
[root@XXXX mysql]# pwd
/var/lib/mysql
[root@XXXX mysql]# chown -R mysql:mysql /var/log/mysql
[root@XXXX mysql]#
[root@XXXX mysql]# service mysql restart #重启mysql
3.登录mysql后先锁表,再导出mybase库为文件。
mysql> flush tables with read lock;
4.退出mysql,在外面执行:
mysqldump -h127.0.0.1 -p3306 -uroot -p mybase > /usr/local/mybase.sql
5.登录mysql解锁表
mysql> unlock tables;
6.在主机B数据库中导入刚才导出的sql文件,打开从数据库主机B的my.cnf(如果没有,按第二步进行操作获得mn.cnf),输入如下(注意:部分网上教程会在这里面直接加master_host等参数,在5.5及以上后不再支持,需要另行配置,本教程会在第7步说明):
server-id = 245
log_bin = /var/log/mysql/mysql-bin.log #“确保此文件可写”
replicate-do-db =mybase #只复制某个库
replicate-ignore-db=mysql #不复制某个库
上述“确保此文件可写”需要命令执行,打开这个文件夹权限,需要先进入mysql的目录后,执行:
[root@XXXX mysql]# pwd
/var/lib/mysql
[root@XXXX mysql]# chown -R mysql:mysql /var/log/mysql
[root@XXXX mysql]#
[root@XXXX mysql]# service mysql restart #重启mysql
7.在登录进mysql的前提下输入如下命令:
mysql>change master to master_host='192.168.160.245',master_user='backup',master_password='123456',master_connect_retry=10;
mysql> start slave;
8.查看配置是否正常,在mysql下执行:
mysql> show slave status\g
看输出:
slave _io_running和slave_sql_running两个值,
如图红框标注的是否是yes。如果有connnecting就稍作等待,再次查询。如果排版比较乱,就看“mysql-bin.000007”(类似,只有后面尾数有变化)后面是不是有两个yes。
9.验证,在主机A数据库进行操作mybase表,再验证主机B数据库是否有实时更新。
PS:备注一下可能用到的命令:
创建数据库:CREATE DATABASE mybase
创建表:CREATE TABLE mybase(
id int not null,
name char(20)
);
删除库:drop database mybase;
数据库导入:mysql -u root -pchina mysql < /usr/local/mybase.sql
查文件:find / -name xxxxxx
rpm安装:rpm -ivh --nodeps xxxx
mysql初始化密码:mysqladmin -u root password “newpass”
本人在安装时候用到的博文如下: