MySQL的复制主从设置

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;

 

上一篇:分布式搜索Elasticsearch——QueryBuilders.matchPhrasePrefixQuery


下一篇:JVM 性能调优工具 jinfo