MySQL的复制主从设置

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 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、然后到主服务器上当前的二进制日志名和偏移量值。

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;

 

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
mysql用户权限设置
mysql用户权限设置
|
20天前
|
网络协议 关系型数据库 MySQL
mysql8.0远程连接权限设置
mysql8.0远程连接权限设置
52 0
|
1月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
722 0
|
1月前
|
SQL 关系型数据库 MySQL
解决MySQL主从慢同步问题的常见的解决方案:
解决MySQL主从慢同步问题的方法有很多,以下是一些常见的解决方案: 1. 检查网络连接:确保主从服务器之间的网络连接稳定,避免网络延迟或丢包导致数据同步缓慢。 2. 优化数据库配置:调整MySQL的配置参数,如增大binlog文件大小、调整innodb_flush_log_at_trx_commit等参数,以提高主从同步性能。 3. 检查IO线程和SQL线程状态:通过SHOW SLAVE STATUS命令检查IO线程和SQL线程的状态,确保它们正常运行并没有出现错误。 4. 检查主从日志位置:确认主从服务器的binlog文件和位置是否正确,避免由于错误的日志位置导致同步延迟。 5.
108 1
|
2月前
|
关系型数据库 MySQL 数据库
MySQL时间字段设置自动更新
MySQL时间字段设置自动更新
24 0
|
3月前
|
SQL 关系型数据库 MySQL
mysql使用default给列设置默认值的问题
mysql使用default给列设置默认值的问题
32 0
|
3月前
|
关系型数据库 MySQL 数据库
百度搜索:蓝易云【【Docker】Docker部署Mysql并设置数据持久化教程】
通过以上步骤,您已经成功地在Docker中部署了MySQL,并设置了数据持久化,确保数据在容器重新启动或迁移时得以保留。
47 0
|
3月前
|
关系型数据库 MySQL API
|
4月前
|
负载均衡 关系型数据库 MySQL
MySQL主从架构的搭建
MySQL主从架构的搭建
57 3
|
3月前
|
SQL 关系型数据库 MySQL
MySQL-主从架构的搭建
MySQL-主从架构的搭建
52 0

推荐镜像

更多