【MySQL】MySQL多实例开机自动重启

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 一 简介    作为MySQL DBA ,在维护数据库的过程中,偶尔会遇到服务器异常crash/重启情况,DBA需要在机器重启之后将MySQL数据库重启(当然也有可能其他的数据库本文重点介绍MySQL)。
一 简介
   作为MySQL DBA ,在维护数据库的过程中,偶尔会遇到服务器异常crash/重启情况,DBA需要在机器重启之后将MySQL数据库重启(当然也有可能其他的数据库本文重点介绍MySQL)。如果是一台机器重启或者少数几个实例还好方便维护,当实例个数成百上千时,遇到硬件更换,需要批量重启服务器时,一个个人肉重启数据库实例未免太过麻烦。我们需要一种随服务器开机自动重启的机制。
二 Linux 服务器启动 知识点
redhat的启动方式和执行次序是: 
1 加载内核
2 执行init程序
3 /etc/rc.d/rc.sysinit   # 由init执行的第一个脚本
4 /etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式,linux 共有7种运行模式,后续会介绍。
5 /etc/rc.d/rc.local     # 相应级别服务启动之后、在执行该文件(其实也可以把需要执行的命令写到该文件中)
6 /sbin/mingetty         # 等待用户登录
这里我们重点介绍/etc/rc.d/下的rcN.d目录(N是0~6的数字,其他请参考 文档资料) ,
  1. root@rac3:/etc/rc.d# >ls
  2. init.d rc rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local rc.sysinit
rc.sysinit根据inittab中的配置顺序来执行rcN.d目录下的脚本,(注意rcN.d中放置的是init.d中脚本的软链接)其命名格式是:
S{number}{name}
K{number}{name}
S开始的文件向脚本传递start参数
K开始的文件向脚本传递stop参数
以K开头的脚本运行在以S开头的脚本之前,number决定相同字母开头的脚本执行的顺序,S18mysqlatuo 执行顺序在S19mysqlatuo之前。
假设缺省的运行模式是3,系统就会按上述方式调用/etc/rc.d/rc3.d/下的脚本。 所以用户可以在这个文件中添加一些需要在系统完成初始化工作之后,用户登录之前执行的命令或者启动的服务 比如 MySQL。

三 实践
  根据上述介绍的规则,在rc3.d下面配置MySQL自动启动的脚本。 本文一开始强调处理单机多实例的开启自动重启,在编写脚本时注意针对多个实例的处理,考虑到生产环节下 ,数据库实例可能发生迁移/下线等操作,在脚本中将端口写死 的方式是不推荐的。

  1. chmod +x mysqldauto
  2. mv mysqldauto /etc/rc.d/init.d/
  3. 处理启动命令
  4. ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc3.d/S99mysqld
  5. 处理关闭命令
  6. ln -s /etc/rc.d/init.d/mysqldauto /etc/rc.d/rc0.d/K20mysqld
mysqlauto 脚本的内容如下:
#!/bin/bash
#获取 数据目录下的所有端口 mysql_ports
#author :yangyi
#date  : 2016-02-15

MYSQL_ADMIN=`which mysqladmin`
MYSQLD_SAFE=`which mysqld_safe`
MYSQL_PORTS=`ls /srv/ | grep -e "my[0-9][0-9]*" | sed 's#my# #g' | tr -d '\n' | sed 's#^ ##g'`
mysql_start()
{
ports_list=$1
for port in $ports_list; 
do
   SOCKET_FILE=/srv/my${port}/run/mysql.sock
   if [[  ! -f "$SOCKET_FILE" ]]; then
           $MYSQLD_SAFE --defaults-file=/srv/my${port}/my.cnf  --read_only=1 &
           sleep 2;
   fi
done
}
mysql_stop()
{
ports_list=$1
for port in $ports_list; 
do
SOCKET_FILE=/srv/my${port}/run/mysql.sock
if [[ -e $SOCKET_FILE ]]; then      
$MYSQL_ADMIN  -uroot -S $SOCKET_FILE  shutdown 
sleep 2;
fi
done
}
case "$1" in 
start) 
mysql_start $MYSQL_PORTS
;; 
stop) 
mysql_stop  $MYSQL_PORTS
;; 
*) echo "Usage: $0 {start|stop|help} " 
esac
四 参考文章
1 Linux中设置服务自启动的三种方式 
2 随Linux开机自动启动mysql  --苏普的文章
3 Linux系统脚本的常见启动顺序    

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
关系型数据库 MySQL Linux
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
Linux部署实战前言,MySQL在CentOS安装【单机软件】,MySQL的安装需要root权限,yum install mysql,systemctl enable mysqld开机自启的意思
|
Ubuntu 关系型数据库 MySQL
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
301 0
Linux:Ubuntu安装jdk、tomcat、mysql,以及实现Tomcat开机自启动
|
MySQL 关系型数据库 数据格式
mac 设置mysql开机自启动
mac 设置mysql开机自启动1、编辑一个mysql启动文件。 在终端里面输入: sudo vi /Library/LaunchDaemons/com.mysql.mysql.plist 2、输入启动文件内容: 复制代码<?xml version="1.
3195 0
|
3天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
45 11
|
27天前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
112 2
|
22天前
|
弹性计算 关系型数据库 数据库
手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨
阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~
|
25天前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
|
4天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。

热门文章

最新文章