mysql多实例及主从复制

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介:
同一服务器多实例mysql:
优点:有效利用服务器资源
缺点:当某个数据库实例并发很高或有慢SQL查询时整个实例会消耗大量的系统CPU,磁盘,I/O等资源

适用场景:
1.资金紧张的公司
2.并发访问不是特别大的业务
3.门户网站(一般从库多实例)
搭建3307端口mysql
1.解压安装
mkdir /opt/3307_mysql
cp mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz /opt/3307_mysql/
cd /opt/3307_mysql/
tar zxvf mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz
ln -s /opt/3307_mysql/mysql-5.6.30-linux-glibc2.5-x86_64 /opt/3307_mysql/mysql

mkdir -p /data/my3307
mkdir /data/my3307/{run,data,log,tmp}
chown -R mysql:mysql /data/my3307
chown -R mysql:mysql mysql-5.6.30-linux-glibc2.5-x86_64

2.配置修改
修改配置文件vim /data/my3307/my.cnf
basedir = /opt/3307_mysql/mysql
datadir = /data/my3307/data
port = 3307 (指定端口)
# server_id = .....
socket = /data/my3307/mysql.sock(多实例重点就是指定socket文件)

ln -s /data/my3307/my.cnf /opt/3307_mysql/mysql/my.cnf
注:配置初始化等操作都同单实例,登录不同实例时指定不同的socket文件
eg:mysql -uroot -h127.0.0.1 -S /data/my3307/mysql.sock

利用自己搭建的多实例mysql做主从复制
主从复制应用场景:
数据备份
读写分离,从服务器上实现负载均衡
从服务器根据业务重要性进行拆分访问

主从复制原理:
异步复制过程,打开master端的Binlog记录功能,复制过程就是slave端从master获取binlog日志,再在slave上以相同顺序执行binlog日志中所记录的各种SQL操作。
打开binlog记录功能:
[mysqld]
log-bin = /data/my3306/mysql-bin
master:
1.修改配置:
添加id号,开启binlog功能
vim /data/my3306/my.cnf
[mysqld]
server-id = 1
log-bin = /data/my3306/mysql-bin

2.重启主库:
mysqladmin -uroot -S /data/my3306/mysql.sock shut down 关闭
cd /opt/mysql
./bin/mysqld_safe --defaults-file=/data/my3306/my.cnf --user=mysql & 启动

3.登录数据库检查:
mysql -uroot -S /data/my3306/mysql.sock
mysql> show variables like 'server_id';
08ab8a61d6551827146eb5b15ad9e758cb59fa52
检查binlog功能是否开启。
mysql> show variables like 'log_bin';
ba4921dc6c869d1e57867d7e482f62212c965903


4.建立从库复制的账号rep:
mysql> grant replication slave on *.* to 'rep'@'%' identified by 'abc123';
67fe28ef1493010c41a40a0878199bad2c977995
mysql> flush privileges; 刷新授权表

5.实现对主数据库锁表只读(不退出当前窗口)
mysql> flush table with read lock;
mysql> show master status;
943c9bbe5822fa96641876cee1a1f262e4057b7a
从库导入全备后,继续主从复制时从这个位置开始。

导出数据库所有文件:
mysqldump -uroot -S /data/my3306/mysql.sock --master-data=2 --events -A -B | gzip > mysql_bak.$(date +%F).sql.gz

解锁:mysql> unlock tables;
--master-data
--single-transaction 
 --master-data[=#]  在备份导出的文件里追加二进制binlog文件的位置和名称 
                        如果值等于1,就会添加一个CHANGE MASTER语句 
                        如果值等于2,就会在CHANGE MASTER语句前添加注释(不起作用了呗~) 
                        这个参数会--lock-all-tables锁表,除非你指定了--single-transaction 
                        这种情况下,锁表只会在dump开始的时候持续一小段时间,照理说 
                        在dump的时候,任何动作都会影响到binlog文件 
                        dump结束之后,选项会自动关闭锁表功能
就是主从复制在做全量备份的时候,这个选项可以自动帮我们锁表和识别binlog临界文件,就不需要我们锁表,再看临界文件编号,再执行CHANGE MASTER填写binglong位置信息到从库master.info文件中了,提高了从库部署效率吧。

从库:
编辑配置文件
vim /data/my3307/my.cnf
[mysqld]
server-id = 3

重启数据库:
mysqladmin -uroot -S /data/my3307/mysql.sock shut down
cd /opt/3307_mysql/mysql
./bin/mysqld_safe --defaults-file=/data/my3307/my.cnf --user=mysql &

检查参数:
mysql> show variables like 'log_bin';
mysql> show variables like 'server_id';

导入数据:
gzip -d mysql_bak.2016-08-31.sql.gz
mysql -S /data/my3307/mysql.sock < mysql_bak.2016-08-31.sql

登录从库,配置参数:
mysql> change master to master_host='172.16.1.233',
-> master_port=3306,
-> master_user='rep',
-> master_password='abc123',
-> master_log_file='mysql-bin.000001',
-> master_log_pos=396;

开启从库:
mysql -S /data/my3307/mysql.sock -e "start slave;"
mysql -S /data/my3307/mysql.sock -e "show slave status\G;"
2a1fe7f161e18b61b7502d28b7b17a1a200f8216

检测:在主库插入数据,登录从库查看是否同步。
主备断开时,重新指定断开时的binlog文件和setion即可
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 运维 关系型数据库
MySQL数据库运维第一篇(日志与主从复制)
MySQL数据库运维第一篇(日志与主从复制)
|
13天前
|
SQL 关系型数据库 MySQL
配置MySQL主从复制(一主一从)
配置MySQL主从复制(一主一从)
|
1月前
|
关系型数据库 MySQL 网络安全
Mysql 数据库主从复制
在MySQL主从复制环境中,配置了两台虚拟机:主VM拥有IP1,从VM有IP2。主VM的`my.cnf`设置server-id为1,启用二进制日志;从VM设置server-id为2,开启GTID模式。通过`find`命令查找配置文件,编辑`my.cnf`,在主服务器上创建复制用户,记录二进制日志信息,然后锁定表并备份数据。备份文件通过SCP传输到从服务器,恢复数据并配置复制源,启动复制。检查复制状态确认运行正常。最后解锁表,完成主从同步,新用户在从库中自动更新。
1024 7
Mysql 数据库主从复制
|
19天前
|
关系型数据库 MySQL PHP
开发者必看:MySQL主从复制与Laravel读写分离的完美搭配
开发者必看:MySQL主从复制与Laravel读写分离的完美搭配
35 2
|
19天前
|
SQL canal 关系型数据库
(二十四)全解MySQL之主从篇:死磕主从复制中数据同步原理与优化
兜兜转转,经过《全解MySQL专栏》前面二十多篇的内容讲解后,基本对MySQL单机模式下的各方面进阶知识做了详细阐述,同时在前面的《分库分表概念篇》、《分库分表隐患篇》两章中也首次提到了数据库的一些高可用方案,但前两章大多属于方法论,并未涵盖真正的实操过程。接下来的内容,会以目前这章作为分割点,开启MySQL高可用方案的落地实践分享的新章程!
122 1
|
23天前
|
Prometheus 监控 Cloud Native
Prometheus结合Consul采集多个MySQL实例的监控指标
将 Prometheus 与 Consul 结合使用,实现对多个 MySQL 实例的自动发现与监控,不仅提高了监控的效率和准确性,也为管理动态扩缩容的数据库环境提供了强大的支持。通过细致配置每一部分,业务可以获得关键的性能指标和运行健康状况的即时反馈,进而优化资源配置,提高系统的稳定性和可用性。
39 3
|
26天前
|
SQL 监控 关系型数据库
面试题MySQL问题之主从复制的数据一致性问题如何解决
面试题MySQL问题之主从复制的数据一致性问题如何解决
20 1
|
5天前
|
前端开发 Java 关系型数据库
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
通过HTML网页对mysql数据库进行增删改查(CRUD实例)
|
1月前
|
分布式计算 大数据 关系型数据库
MaxCompute产品使用合集之如何实现类似mysql实例中的数据库功能
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
2月前
|
存储 关系型数据库 MySQL
Java大佬必知必会——MySQL主从复制
如果你现在有两台MySQL,一台版本是03年的MySQL5.0,另一台是18年的MySQL8.0.11。新版本可以作为老版本的从服务器,但反过来是不可行的。如果二进制文件包含了已存在的数据,就会造成数据重复了。如果从服务器复制该二进制文件后的数据库状态是混乱无序的,那整个复制的过程就没有意义了。如果主、从服务器存储数据的顺序不一样,就会导致每次执行删除的数据都是不同的。,老版本可能无法解析新版本的新特性,甚至复制的文件格式都差异太大。MySQL从库只会复制它本身缺失的最新数据,利用二进制文件里的。
Java大佬必知必会——MySQL主从复制