mysql多实例及主从复制

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
同一服务器多实例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即可
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
144 1
|
3月前
|
存储 关系型数据库 MySQL
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
环比、环比增长率、同比、同比增长率 ,占比,Mysql 8.0 实例(最简单的方法之一)(sample database classicmodels _No.2 )
154 1
|
3月前
|
SQL 前端开发 关系型数据库
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
65 0
全表数据核对 ,行数据核对,列数据核对,Mysql 8.0 实例(sample database classicmodels _No.3 )
|
3月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
150 1
|
5天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
43 14
|
17天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
93 24
|
3月前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
146 1
MySQL主从复制原理和使用
|
3月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
2月前
|
关系型数据库 MySQL 数据库
【赵渝强老师】启动与关闭MySQL数据库实例
MySQL数据库安装完成后,可以通过命令脚本启动、查看状态、配置开机自启、查看自启列表及关闭数据库。本文提供了详细的操作步骤和示例代码,并附有视频讲解。
|
3月前
|
关系型数据库 MySQL Java
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。
这篇文章是关于如何使用Django框架配置MySQL数据库,创建模型实例,并自动或手动创建数据库表,以及对这些表进行操作的详细教程。
112 0
Django学习二:配置mysql,创建model实例,自动创建数据库表,对mysql数据库表已经创建好的进行直接操作和实验。

推荐镜像

更多