1、确保主从服务器一至
2、GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.2' IDENTIFIED BY '1234test';
3、修改/etc/my.cnf 下面的
log-bin =/home/mysql/log/mysql-bin.log
server-id=1;
4、在主服务器上,设置读锁定有效,这个操作是为了确保没有数据库操作
flush tables with read lock;
5、然后到主服务器上当前的二进制日志名和偏移量值。这个操作的目的是为了在从数据库启动以后,从这个点开始进行数据的恢复。
show master status;
6、现在主数据库服务器已经停止了更新操作,需要生成主数据库的备份,备份的方式有很多种,可以直接操作系统下cp 全部的数据文件 到数据库服务器上,也可以通过mysqldump 导出数据或者使用ibbackup工具进行数据备份,那么直接cp 数据文件应该是最快的生成快照的方法:
tar -cvf data.tar data
7、主数据库的备份完毕后,主数据库可以恢复写操作,剩下的操作只需要在从服务器执行:
unlock tables;
8、将主数据库的一致性备份恢复到从数据上。如果是使用.tar 打包的文件包,只需要解开到相应的目录即可
9、修改从数据库的配置文件my.cnf 增加server-id参数。注意server-id的值必须是唯一的,不能和主数据库的配置相同,如果有多个从数据库服务器,每个从数据库服务器必须有自己的唯一的server-id值
my.cnf中修改:
[mysqld]
server-id=2
10、在从服务器上,使用--skip-slave-start 选项启动从数据库,这样不会立即启动从数据服务上的复制进程,方便我们对从数据库的服务进行进一步的配置:
./bin/mysqld_safe --skip-slave-start &
Starting mysqld daemon with databases from /home/mysql/sysdb/data
11、对从数据库数据库服务器做相应设置,指定复制使用的用户 ,主数据库服务器的IP,端口以及开始执行复制的日志文件 和位置等:
CHANGE MASTER TO
MASTER_HOST='MASTER_HOST_NAME',
MASTER_PORT='MASTER_HOST_NAME',
MASTER_USER='REPLICATION_USER_NAME',
MASTER_PASSWORD='REPLICATION_PASSWORD',
MASTER_LOG_FILE='RECORDED_LOG_FILE_NAME',
MASTER_LOG_POS=RECORDED_LOG_POSITION;
举例说明
CHANGE MASTER TO
MASTER_HOST='192.168.1.3',
MASTER_HOST='3306',
MASTER_USER='repl',
MASTER_PASSWORD='1234test',
MASTER_LOG_FILE='mysql-bin.000039',
MASTER_LOG_POS=102;
12、在从服务器上,启动slave线程:
start slave;
13、这时slave上执行show processlist 命令将显示类似如下进程:
show processlist \G;
14、也可以测试复制服务器的正确性,在主数据库上执行一个更新操作,观察是否在从数据上同步。在主数据库上test数据创建一个测试表,插入数据:
use test
show tables;
create table repl_test(id int);
insert into repl_test values(1),(2),(3),(4),(5);
15、在从数据库上检查新表是否被创建,数据是否同步:
use test
show tables;
select * from rela_test;
可以看到数据可以正确同步到从数据库上,复制服务器配置成功完成.
主要复制启动选项
read-only
1、主数据库中创建用户:
grant all privileges on test.* to 'lisa'@'%' identified by '1234';
2、从服务器使用该用户登陆 ,可以删除表中的记录
mysql -ulisa -p1234 test
select * from repl_test;
delete from repl_test;
mysqladmin -uroot -pshutdown
./bin/mysqld_safe --read-only&
Starting mysqld daemon with databases from /home/mysql/sysdb/data
4、然后再使用Lisa用户登录数据库,进行删除操作:
mysql -ulias -p1234 test
select * from repl_test;
select * from repl_test;
delete from repl_test;
日常管理维护:
查看从服务器状态
show slave status \G;
主从服务器同步维护
在某些繁忙的OLTP(在线事务处理)系统上,由于主服务器更新频繁,而从服务器由于各种原因(比如硬件性能较差)导致更新速度较慢,从而使得主从服务器之间的数据差距,常用方法 在负载较低的时候阻塞主数据库的更新,强制主从数据库更新同步。
1、在主服务器上,执行以下语句(注意,会阻塞主数据库的所有更新操作):
FLUSH tables with read lock;
show master status;
记录show语句的输出的日志名和偏移量,这些是从服务器复制的目的坐标。
2、在从服务器上,执行下面语句,其中MASTER_POS_WAIT()函数的参数是前面步骤中得到的复制坐标值:
select MASTER_POS_WAIT('mysql-bin.000039','974');
在主服务器上,执行下面的语句允许主服务器重新开始处理更新:
UNLOCK TABLES;