在[mysqld]下添加
-------------主服务器---------------
《步骤1》
vi /etc/my.cnf (源码编译安装的mysql配置文件所在)/data0/mysql/3306/my.cnf
[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = huoli #要同步的数据库
binlog-do-db = db2 #第二个要同步的数据库
binlog-ignore-db = test
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
service mysql restart (源码编译安装的mysql启动命令) /data0/mysql/3306/mysql
start
《步骤2》
登陆mysql命令行,执行
GRANT REPLICATION SLAVE ON *.* TO
'帐号'@'从服务器IP' IDENTIFIED BY '密码';
REPLICATION SLAVE
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.171'
IDENTIFIED BY '878899';
GRANT REPLICATION SLAVE ON *.* TO 'backup'@'192.168.1.172'
IDENTIFIED BY '878899';
测试账号是否可以连接使用
《步骤3》
-------------主服务器-------------------
锁定主机数据库表
msyql>FLUSH TABLES WITH READ
LOCK;
Query OK, 0 rows affected (0.13 sec)
查看主机 Master 状态
mysql>SHOW MASTER STATUS;
————》这一步看到的信息是《步骤6》中的信息,注意改正确!
备份主机数据库
cd /usr/local/mysql/var/ 源码编译安装的mysql的数据库位置 /data0/mysql/3306/data/
tar zcvf db_backup.tar.gz ibdata* ib_logfile* huoli/
mv db_backup.tar.gz /tmp
《步骤4》
-------------从服务器-------------
vi /etc/my.cnf 源码编译安装的mysql的配置文件 vi /data0/mysql/3306/my.cnf server-id (从机的ID号不能重复,要唯一)
[mysqld]
server-id = 2
log-bin=mysql-bin
replicate-do-db = huoli #接收要同步的主服务器的数据库
replicate-do-db = db2 #接收要同步的主服务器上的第二个数据库
replicate-ignore-db = test
replicate-ignore-db = mysql
replicate-ignore-db = information_schema
service mysql start 重启mysql
/data0/mysql/3306/mysql
restart
《步骤5》
---------从服务器----------
为了保持数据一致:
$ service mysql stop 源码编译安装的mysql停止命令 /data0/mysql/3306/mysql
stop
$ cd /usr/local/mysql/var 源码编译安装mysql的数据库路劲
/data0/mysql/3306/data/
删除从机上的日志和数据
$ rm -rf ibdata* ib_logfile* mysql-bin.* master.info
relay-log.info huoli/
[有类似数据库则删除]
复制主mysql的数据文件到当前目录,解压缩
$ scp 192.168.1.172:/tmp/db_backup.tar.gz ./
$ tar zxvf db_backup.tar.gz
修改权限
$ chown -R mysql.mysql ibdata* ib_logfile* huoli/
《步骤6》
-----------在从服务器进行-------------
先启动mysql
service mysqld start (源码编译安装的mysql启动命令)/data0/mysql/3306/mysql
start
停止原来的备份
mysql>slave stop;
Query OK, 0 rows affected, 1 warning (0.00 sec)
设置备份点(根据主服务器的日志文件和记录点来设置)
mysql>CHANGE MASTER TO
MASTER_HOST='192.168.1.170',MASTER_PORT=3306,MASTER_USER='backup',MASTER_PASSWORD='878899',MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=107;
Query OK, 0 rows affected (0.02 sec)
启动备份
mysql>slave start;
Query OK, 0 rows affected (0.02 sec)
解锁主机数据库表
msyql>UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)
mysql>show slave status\G
执行后信息显示如下:(显示的一样则成功)
(否则这样测试:使用客户端的连接上主从服务器的mysql,在主服务器的mysql要同步的数据库中新添一个表,再刷新从服务器端相应的数据库中看看是否有这个表!)
*************************** 1. row
***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.19.203.200 ————》这是主服务器IP
Master_User: backup
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 524
Relay_Log_File: localhost-relay-bin.000002
Relay_Log_Pos: 235
Relay_Master_Log_File: mysql-bin.000010
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB: db1,db2
Replicate_Ignore_DB: test,mysql,information_schema
Exec_Master_Log_Pos: 524
Master_SSL_Key:
Seconds_Behind_Master: 0