MySQL(mariadb)多实例应用与多实例主从复制


mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306、3307,3308),运行多个服务进程。这些 mysql 服务进程通过不同的 socket来监听不同的数据端口,进而互不干涉的提供各自的服务。在同一台服务器上,mysql 多实例会去共用一套 mysql 应用程序,因此在部署 mysql的时候只需要部署一次 mysql程序即可,无需多次部署。但是,mysql多实例之间会各自使用不同的 my.cnf 配置文件、启动程序和数据文件。在提供服务方面,mysql多实例在逻辑上看起来是各自独立,互不干涉的,并且多个实例之间是根据配置文件的设定值,来获取相关服务器的硬件资源。当一个公司业务访问量不太大,又想节俭成本,并且还希望不同业务的数据库服务能够各自尽量独立,提供服务能够互相不受影响。另外还需要应用主从同步等技术来提供数据库备份或读写分离服务,以及方便后期业务量增大时,数据库架构的扩展和迁移。公司业务访问量不是太大的时候,服务器的资源基本都是过剩状态。此时就很适合 mysql 多实例的应用。如果对 SQL语句 优化做的比较好,mysql 多实例 是一个很值得去使用的技术。mysql 多实例常规来讲,有三种方案可以实现,这三种方案各有利弊,如下:优点:逻辑简单,配置简单缺点:管理起来不方便优点: 便于集中管理管理缺点: 不方便针对每个实例配置进行定制优点:便于集中管理缺点:耦合度高。IM一挂,实例全挂不方便针对每个实例配置进行定制本章内容采用第一种方式来是实现,(个人倾向于这种方式),数据库采用mariadb来代替mysql,过程都一样系统与安装版本信息
操作系统:Centos6.9
数据库:mariadb-10.2.15.tar.gz
三个实例:3306,3307,3308创建mysql用户组useradd -r mysql创建实例数据库目录
各实例的数据库目录,配置文件目录,启动程序目录都存放在单独的目录位置,结构如下:解压安装源码包如果执行cmake提示:CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:183 (message):
添加编译参数:-DWITHOUT_TOKUDB=1安装成功后先不初始化,把配置文件,启动脚本文件都配置完成后再执行初始化复制配置文件到各实例的etc目录下配置文件在源码包解压目录下修改配置文件内容,3306,3307,3308各实例配置文件修改my.cnf内容,修改端口,socket路径,数据存放目录等同样,3307,3308实例也要修改相同的配置编写服务启动脚本上面的脚本要准备三份,因为mysql实例是各自独立管理的,将上面的脚本参数port变量修改成3307,3308即可,放在 各自实例的bin目录,服务启动是从各自实例的bin目录下执行这脚本初始化数据库修改mysql实例目录属主chown -R mysql:mysql /data/mysql启动各实例服务测试登录至此mysql的多实例安装完成,在这种多实例的环境下,可以单独使用个实例进行数据存储,也可以将各实例配置成主从架构进行使用,下面顺便把mysql的主从也介绍使实现一下,关于mysql的主从架构,以后会专门研究各种功能,这里只简单实现,能够帮助理清主从复制的工作过程和配置过程。在开始主从配置之前先简单介绍一下mysql的主从复制原理,
mysql复制原理大致如下:
1,mysql主数据库在事物提交时会把数据变更作为事件events记录在二进制日志文件bin-log中,mysql主库上的sync_binlog参数控制bin-log日志刷新到磁盘2,主库推送二进制日志文件bin-log中的事件到从库的中继日志Relay Log ,之后从库根据中继日志Relay log重写数据操作将数据写入从库,以此达到主库和从库的数据一致mysql复制过程中通过3个线程来完成复制操作:其中binlog dump线程在主库上,I/O线程和SQL线程在从库上,当在从库上启动复制(START SLAVE)时,首先会I/O线程连接主库,(连接主库用户用主库创建),主库随后创建binlog dump线程读取数据库事件(binlog日志)并发送给I/O线程,I/O获取到binlog日志数据后更新到从库的中继日志Relay log中,从库上的SQL线程读取中继日志Relay log 中数据写入本地数据库,最终完成主从复制。本文实现一主多重的方式,即上面的3个mysql实例,3306实例作为主库,3307和3308作为从库,实现主从复制的最为关键的是日志文件的设置,主库必须要开启二进制日志,从库要关闭二进制,并且开启中继日志relay log,要点如下:查看mysql是否开启二进制和中继日志mysql安装默认会启用二进制日志,但么有启动relay log,所以主库上无需设置,从库需要开启中继日志:
编辑实例3307,3308的my.cnf关闭bin-log,开启中继日志,修改server-id3307实例:3308实例:修改后要重启3307,3308实例重启从库实例后检查日志启用情况查看主库的bin-log日志记录位置节点
因为在从库中使用change master to 指令连接主库时要指定连接时主库的bin-log日志记录位置节点。登录到从库3307实例:登录到从库3308实例:启动3307实例并查看复制状态启动3308实例并查看复制状态至此,配置启动都没有问题,下面从主库实例3306中写入一些数据看看看看3307,3308实例能不能正常同步数据登录主库3306实例写一些数据:登录从库3307实例查看数据:登录从库3308实例查看数据:经过测试同步功能正常,文章最后再次总结一下mysql主从复制的要点:1. 主库必须开启bin-log二进制日志
2. 从库必须开启中继日志Relay-log,关闭bin-log
3. 主从的server-id 必须不能相同
4. 主库创建同步用户
5. 确保上面设置后,登录从库执行 change master to 指令
6. 主从时间同步在后面的文章里,会比较详细介绍使用mysql的主从复制功能个人博客站点开发云主机域名www.gudaoyufu.com

相关推荐: sql server可以免费使用吗

sql server可以免费使用吗?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。SQ开发云主机域名L Server 2008 Express 是 SQL Server 的免费版本,是学习和构建…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/06 19:45
下一篇 06/06 19:46

相关推荐