mysql 主从

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介:

我们在搭建网站的时候,对于数据库的操作是非常重要的一部分,当一台服务器的负载过高的时候,我

们则需要把 mysql 数据库放到另外一台机器上面来减轻服务器的压力,这里我们就要用到 mysql 的主从以

及 msyql 读写分离架构,那么我们先来看看 mysql 主从的原理以及操作步骤。


mysql主从原理:当搭建完一个 mysql 主从架构之后,mysql 主机上的数据内容一旦发生变化(进行了

任何操作),就会将这个变化记录到日志 二进制日志bin_log 里,然后将这个日志送到 mysql 从机

上,从机一旦接受到这个日志,又会将这个日志变成自己的bin_log,接着进行记录,之后根据这个日志

的记录来改变自己的数据,这样就做到了主从数据的一致。


A -- change database --> bin_log -transfer-> B -- repl_log --> change database


可以应用在读写分离的场景中,用以降低单台MySQL服务器的I/O 


可以实现MySQL服务的HA集群


可以是1主多从,也可以是相互主从(主主)



讲完了原理,下面我们来看看具体的步骤:



1、主机下配置:


1.1、编辑数据库配置文件:vim /etc/my.cnf

在[mysqld]的下面加入代码:


    log-bin=mysql-bin

    server-id=1         //这里的“1”可以自定义,只要是唯一的就可以

    innodb-do-db=db1      //表示只同步该数据库   

    innodb-ignore-db=db2   //表示忽略同步该数据库,如果不加这两个参数的话,就表示备份

所有的数据库


1.2、修改配置文件之后,重新启动mysql:


    /etc/init.d/mysqld restart


1.3、登录mysql服务器:mysql -uroot -p


    在主服务器新建一个用户赋予“replication slave”的权限

     -> grant replication slave on *.* to 'repl'@'X.X.X.X' identified by 'password';

     //其中“X.X.X.X”为从服务器的ip地址


     锁定数据库以防止写入数据

    -> flush tables with read lock; 


     一定要记住前两列的内容,一会会用到
    -> show master status;        


1.4、退出mysql命令行,导出数据库:


    mysqldump -uroot -p --default-character-set=utf8 --all-databases > /data/all.sql


1.5、将数据库备份文件传到从服务器:


    rsync -avL /data/all.sql 192.168.1.133:/data/mysql/


1.6、解锁数据表:


    -> unlock tables;



2、从机下配置:


2.1、登录从服务器


2.2、导入主服务器的数据:


    mysql -uroot -p --default-character-set=utf8 < /data/mysql/all.sql


2.3、编辑配置文件my.cnf,在[mysqld]下面加入:


    server-id=2


2.4、保存文件并重新启动mysql:


    /etc/init.d/mysqld restart


2.5、登录mysql,执行以下命令:


    -> stop slave;


    -> change master to master_host='X.X.X.X', master_port=3306, master_user='repl',

 master_password='password', master_log_file='mysql-bin.000009', master_log_pos=262;

 
    -> start slave; 


注意:一定要先把从服务停止,才能执行第二条命令,不然会报错master_host 是主服务器的ip,

master_port 是主服务器的端口,master_user 是建立数据库时的用户,最后两项是之前要记住的

master 状态的前两列。


2.6、在从上执行命令:


    -> show slave status\G;


    如果出现两个yes,则说明主从架构配置成功:


    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes


3、如果我们要配置主服务器的数据库二进制日志的过期时间,可以在配置文件中使用参数来定义:


    expire_logs_days = 30

本文转自奇迹的少年博客51CTO博客,原文链接http://blog.51cto.com/raffaelexr/1747616如需转载请自行联系原作者


liliangchun

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Kubernetes Cloud Native 关系型数据库
提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧
【4月更文挑战第9天】提升数据安全与性能,掌握Helm一键部署MySQL 8.0主从技巧
53 0
|
2月前
|
关系型数据库 MySQL 开发工具
MySQL5.7主从配置(Docker)
MySQL5.7主从配置(Docker)
739 0
|
2月前
|
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.
170 1
|
5月前
|
负载均衡 关系型数据库 MySQL
MySQL主从架构的搭建
MySQL主从架构的搭建
61 3
|
5月前
|
SQL 关系型数据库 MySQL
小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)
小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)
77 0
|
4月前
|
SQL 关系型数据库 MySQL
MySQL-主从架构的搭建
MySQL-主从架构的搭建
66 0
|
1天前
|
关系型数据库 MySQL Linux
服务器Linux系统配置mysql数据库主从自动备份
这是一个基本的配置主从复制和设置自动备份的指南。具体的配置细节和命令可能因您的环境和需求而有所不同,因此建议在操作前详细阅读MySQL文档和相关资源,并谨慎操作以避免数据丢失或不一致。
9 3
|
2天前
|
关系型数据库 MySQL Linux
本地虚拟机centos7通过docker安装主从mysql5.7.21
本地虚拟机centos7通过docker安装主从mysql5.7.21
10 0
|
13天前
|
SQL 关系型数据库 MySQL
MySQL主从模式最佳实践
主从模式是很常见的数据库存储解决方案,一主多从,当然还有双主模式(多主模式),你对数据库的主从模式有哪些见解,欢迎跟 V 哥聊聊。
|
1月前
|
SQL 关系型数据库 MySQL
mysql主从同步出错解决办法
mysql主从同步出错解决办法
16 0