zoukankan      html  css  js  c++  java
  • MySQL 5.7数据库安装部署手册 For Linux

    1.概述

    本手册描述了在LINUX(RHEL6或7)操作系统下以二进制编译包方式安装MySQL 5.7社区版数据库软件的操作过程。本手册中红色字体部分需根据实际使用情况更改,如无明确文字说明,均使用操作系统root用户执行命令。

    1.1 文档目的

    规范化及标准化MySQL的安装部署及运维操作,减少运维的复杂性。

    1.2 适用范围

    本手册适用于在Linux操作系统下使用MySQL二进制包进行安装部署。

    2.MySQL 版本规范

    2.1 版本选型

    MySQL 5.7为目前线上环境的主流版本,当前MySQL8.0版本还未趋于稳定,目前暂不建议使用,推荐使用MySQL 5.7最新版(截止文档修改时为MySQL 5.7.26),由于MySQL版本迭代较快,可通过以下链接下载MySQL5.7最新版软件包及可关注release note获得最新版本信息:

    l  最新版本下载地址:https://dev.mysql.com/downloads/mysql/5.7.html

    l  归档版本下载地址:https://downloads.mysql.com/archives/community/

    l  relaes note 地址:https://dev.mysql.com/doc/relnotes/mysql/5.7/en/

    目前MySQL社区版不提供热补丁升级的方式,基于MySQL5.7的版本,均采用in-place方式进行软件包替换方式进行小版本升级。

    3.操作系统软硬件规范

    3.1 操作系统版本

    当前RHEL或CentOS7系统为MySQL运行的主流操作系统平台,建议作为MySQL数据库的首选操作系统。操作系统小版本号不低于7.3。

    3.2 硬件要求

    l   建议使用x86_64架构的服务器

    l   CPU:主频越高越好,核数根据业务量大小选择,建议不小于8核

    l   内存:根据数据量及热点数据大小评估合适的内存大小,建议不小于16G

    l   网卡:千兆、万兆均可

    l   电源:冗余电源、冗余风扇

    l   存储:SSD最佳,机械盘建议万转以上,建议做RAID 10,如果RAID卡支持BBU,可开启RADI卡的WriteBack功能

    3.3 文件系统挂载

    l   数据盘使用逻辑卷(LVM)方式管理,便于扩展

    l   文件系统

    n  redhat7/centos7 推荐使用 xfs

    n  redhat6/centos6 推荐使用 ext4

    l   磁盘调度算法

    n  SAS设备使用 deadline

    n  SSD设备使用 noop

    l   挂载参数

    defaults,noatime,nodiratime,nobarrier

    修改磁盘调度算法:

    [root@10-186-21-83 ~]# echo "deadline" > /sys/block/sdb/queue/scheduler

    [root@10-186-21-83 ~]# vi /etc/rc.local

    echo "deadline" > /sys/block/sdb/queue/scheduler

    修改挂载参数:

    [root@10-186-21-83 ~]# mount -oremount,noatime,nodiratime,nobarrier /dev/sdb /data

    [root@10-186-21-83 ~]# vim /etc/fstab

    /dev/sdb     /data  ext4     defaults,noatime,nodiratime,nobarrier  1 1

    注意:/sys/block/sdb/queue/scheduler中的sdb值在各个环境存在差异,需要改为实际环境的磁盘标识。

    3.4 配置swap权重

    数据库服务器必须降低 swap 的使用权重

    [root@10-186-19-87 ~]# vim /etc/sysctl.conf

    vm.swappiness = 1

    保存后使其生效

    [root@10-186-19-87 ~]# sysctl -p

    3.5 MySQL运行用户及用户组

    建议使用mysql用户运行MySQL服务:

    groupadd mysql

    useradd -m mysql –g mysql

    3.5 MySQL用户ulimit设置

    操作系统对mysql用户注意以下参数的设置,该设置为必须的设置:

    vi /etc/security/limits.d/mysql.conf

    mysql soft nofile 65535

    mysql hard nofile 65535

    mysql soft nproc 65535

    mysql hard nproc 65535

    3.6 防火墙及selinux

    服务器上的 iptables 应该是关闭的,否则规则可能对数据库服务造成影响,需要先确认影响面:

    #关闭iptables

    redhat6/centos6

    [root@10-186-21-83 ~]# /etc/init.d/iptables stop

    [root@10-186-21-83 ~]# chkconfig iptables off

    redhat7/centos7

    [root@10-186-21-83 ~]# systemctl stop firewalld.service

    [root@10-186-21-83 ~]# systemctl disable firewalld.service

    #关闭selinux

    [root@10-186-21-83 ~]# setenforce 0

    [root@10-186-21-83 ~]# cat /etc/selinux/config

    SELINUX=disabled

    SELINUXTYPE=targeted

    3.7 关闭numa

    服务器关闭numa会影响所有进程,关闭numa主要是解决MySQL 服务器swap严重以及内存泄漏的问题。需要注意的是 MySQL5.7.9 引入了innodb_numa_interleave 参数,MySQL自己解决了内存分类策略的问题,前提是服务器支持numa。也就是说如果使用MySQL5.7.9之后的版本,可以不用关闭服务器的numa。

    1. 修改 grub.conf

    l   RHEL/CentOS 6:

    在 /boot/grub/grub.conf 文件中修改 kernel 行(添加numa=off):

    # vi /boot/grub/grub.conf

    kernel /vmlinuz-2.6.39-400.215.10.EL ro root=/dev/VolGroup00/LogVol00 numa=off

    l   For RHEL 7

    i. 在/etc/default/grub 文件中修改 kernel 行:

    # vi /etc/default/grub

    GRUB_CMDLINE_LINUX="rd.lvm.lv=rhel_vm-210/root rd.lvm.lv=rhel_vm-210/swap vconsole.font=latarcyrheb-sun16 crashkernel=auto  vconsole.keymap=us rhgb quiet numa=off

    ii. RHEL7/CentOS7 必须要重建 GRUB 配置文件才能生效:

    # grub2-mkconfig -o /etc/grub2.cfg

    2. 重启操作系统

    # reboot

    3.8 卸载旧版本rpm包

    某些服务器上预装了 MySQL,但是版本是5.1,避免客户端版本差异带来的影响,应该卸载这类rpm包

    [root@10-186-21-83 ~]# rpm -qa|grep mysql -i

    [root@10-186-21-83 ~]# rpm -e --nodeps mysql-xxx-5.1..x86_64

    [root@10-186-21-83 ~]# mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d`

    3.9 配置sar性能数据采集

    sar是一个优秀的性能监视工具,最重要的sar功能是创建数据文件,为系统管理员提供历史性能信息。通过如下方式配置cron收集sar数据。

    数据文件存放在/var/log/sa目录下,需要注意文件大小及磁盘空间。

    #安装

    yum install -y sysstat

      

    #修改配置,注意数据保留天数

    vim /etc/sysconfig/sysstat

      

    #启动sysstat,设置开机启动

      

    #修改cron

    vim /etc/cron.d/sysstat

    */1 * * * * root /usr/lib64/sa/sa1 1 1         #默认是10分钟收集一次,粒度太粗,建议修改为1分钟一次

    53 23 * * * root /usr/lib64/sa/sa2 -A          #生成当天的性能数据,无需修改

    3.10 配置history

    让 history 记录更多历史操作记录,并记录时间戳和执行用户

    vi /etc/bashrc 在末尾添加:

    export HISTFILESIZE=500000000

    export HISTSIZE=1000000

    export PROMPT_COMMAND="history -a"

    export HISTTIMEFORMAT='%F %T '

    export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  `whoami`  "

      

    使配置生效:

    source /etc/bashrc

    4. 实例配置

    4.1 目录规范

    如果条件允许,推荐数据目录与日志目录使用不同的磁盘,减少IO争用。/data目录与/log目录分别挂在不同的存储设备,多实例使用相同父目录以端口号作为每个实例的子目录,目录规范如下:

    basedir = /data/mysql_base

    datadir = /data/mysql_data/3333

    log_bin = /log/mysql/binlog/3333/mysql-bin

    relay_log = /log/mysql/relaylog/3333/mysql-relay

    innodb_log_group_home_dir = /log/mysql/redolog/3333

    临时目录必须单独指定,不能使用操作系统的临时目录:

    tmpdir = /data/mysql_tmp

    4.2 MySQL配置参数

    下面列出重要参数,以及需要视环境灵活调整的参数,完整查看《my.cnf.5.7_for_general》

    (注意:标红参数需要根据环境修改 my.cnf.5.7_for_general模板)

    通用设置:

    参数名

    说明

    port

    端口号,同一服务器上不能重复。安全考虑,建议不使用默认3306。

    tmpdir

    临时目录路径。避免某些情况导致/tmp 目录满,应该单独指定一个路径。

    basedir

    MySQL 安装目录

    datadir

    数据目录

    innodb_temp_data_file_path

    共享临时表空间,非压缩临时表存放位置。设置默认值会在数据目录下创建一个 ibtmp1 文件,可无限扩展,临时表删除时空间可重复使用,总空间只能在重启mysqld时释放。遇到垃圾SQL可能导致磁盘空间耗尽,建议限制最大值,比如:ibtmp1:12M:autoextend:max:20G,当垃圾SQL需要的临时表超过限制会执行报错。

    character_set_server

    数据存储字符集,建议使用utf8mb4,是utf8的超集。每字符最大4字节,支持生僻字和emoji表情。

    collation_server

    字符校验规则,utf8mb4_bin将区分字符大小写。与字符集一样后期修改麻烦,确认后再设置。

    lower_case_table_names

    表名强制转换成小写,建议设置为1。

    transaction_isolation

    定义事务隔离级别,建议设置READ-COMMITTED,即已提交读,可以满足绝大多数业务要求。如果有需求,可修改为RR级别。

    连接与cache:

    参数名

    说明

    max_connections

    允许的最大连接数,实际上会额外留一个连接给具有super权限的用户。默认值151,建议调大,根据业务连接MySQL的数量进行设置。

    wait_timeout

    mysqld等待客户端响应的超时时间,如果超过时间,客户端一直没有新的请求,mysqld会主动断开这个连接。业务端如果连接池配置有问题,是被动断开连接的,下次新的请求被分配到这个被断开的连接时,会报错。一般的,应该大于应用连接池空闲连接检查时间。

    interactive_timeout

    与 wait_timeout 作用相似,保持一致。

    max_connect_errors

    当某个服务器到mysqld的连接被中断(网络,或者程序意外中断)等,会增加 connect_errors的计数值,当超过了阈值这个服务器的连接请求会被mysqld blocked。需要注意的是密码错误造成的连接失败不会被计数,默认值为 100,需要调大。

    query_cache_type

    查询缓存开关,建议关闭:在表的结构或数据发生改变时,查询缓存中的数据会失效;经常做 cache 失效操作,开销大。未来版本会被废弃。

    query_cache_size

    查询缓存大小

    sort_buffer_size

    每个会话的排序缓存大小,MySQL 有两种排序算法:全字段排序、rowid 排序,受 max_length_for_sort_data 值影响。

    全字段排序即会将查询要返回的所有字段数据都放入 sort buffer 中进行排序,好处是数据排序完就可以完成查询,“坏处”是会消耗更多的内存,如果 sort_buffer_size 太小放不下需要排序的数据,则会在进行磁盘临时表排序,效率会大幅降低。

    rowid 排序即只将需要排序的字段以及主键字段的数据放入 sort buffer 中进行排序,排序完成后再回表取得查询要返回的所有字段值。与全字段排序相比多了一次回表,效率较低。当参与排序的单行长度太大,超过 max_length_for_sort_data(默认1024 byte),MySQL采用 rowid 排序算法。

    MySQL的优化思路是:如果内存够,就要多利用内存,尽量减少磁盘访问,所以默认算法是全字段排序。

    请注意 sort_buffer_size 超过一定阈值会导致内存分配算法的改变,从而造成 system CPU 获取内存时间成倍增长,MySQL 性能成倍降低。官方给的阈值为:256K、2M,实测在物理机上超过32M阈值,oltp性能下降10倍。因此模板中设定值为:2M,这个参数的调整需要结合业务实际 SQL 情况,注意不要轻易调大。

    InnoDB 相关:

    参数名

    说明

    innodb_flush_log_at_trx_commit

    redo log刷盘策略,必须为1:

    0:每秒一次将 log buffer 写入 log file 并刷盘,crash 时,丢失1秒内的事务。性能最好,安全性最差。

    1:每次事务提交都写 log file并刷盘,保证数据不丢失。性能最差,安全性最高。

    2:每次事务提交都写 log file(操作系统缓存),但是每秒刷盘一次,mysqld crash并不会丢失事务,只有服务器操作系统崩溃或断电会丢失1秒内的事务。

    innodb_buffer_pool_size

    INNODB的缓冲池大小,根据硬件配置以及数据量大小设置,一般设置为总内存大小的80%

    innodb_buffer_pool_instances

    INNODB缓冲池被分成的实例数量,可以提高缓存数据使用的并发性,减少不同线程页读写页面的竞争。每个缓存池有它单独的空闲列表、刷新列表、LRU列表等等。根据缓冲池大小设置,一般可以设置每个缓冲池4G或8G。

    innodb_io_capacity

    InnoDB后台任务每秒执行的I/O操作次数的上限,例如从缓冲池刷脏页和合并change buffer。对于这个参数值的设置依据比较复杂:

    1. 对于I/O 密集型的业务系统,可以设置大一点提升性能;

    2. 通常根据存储的I/O能力来设置(IOPS),性能越好,可以设置的更高。经验值:万转机械盘raid10设置1000,SSD设置2000-6000,单块机械盘就使用默认值200。

    如果要精确设置,需要进行压力测试找出合理值。

    innodb_max_dirty_pages_pct

    缓冲池脏页比例到达设定值,进行刷脏操作,主要是为了控制脏页数量保证有空闲页可供使用。设置太小会导致刷脏过于频繁,建议值:60

    innodb_flush_method

    innodb 数据刷盘策略,O_DIRECT模式下,数据文件的写入操作是直接从mysql innodb buffer到磁盘的,并不用通过操作系统的缓冲,而真正的完成也是在flush这步,避免innodb和OS的双重缓冲。redo log 使用操作系统 cache。

    innodb_flush_neighbors

    指定从InnoDB缓冲池刷新数据页是否也刷新相同范围内的其他脏页。默认值为1,即刷临近数据页,主要是节省I/O。如果使用SSD,可以将此参数设置为0,因为SSD的I/O性能好,刷新临近数据页反而可能会降低性能。

    innodb_log_file_size

    redo log大小,对于性能的影响主要体现在 checkpoint 上,太小的logfile size的表现情况就是 checkpoint 比较频繁,导致刷新脏页到磁盘的次数增加,性能变差。redo log 是循环使用的,当重做日志不够用时,需要强制刷脏。如果已刷盘的 redo log LSN 与已刷盘的数据脏页 LSN之差 大于 重做日志总大小的一定百分比,则需要刷新足够的脏页回磁盘。

    理论上 redo log 越大,数据库性能越好,但是过大的 redo log 会导致 crash recovery 时间很长。一般我们都将其设置为2-4GB,2个 redo log。

    innodb_log_files_in_group

    redo log数量,一般设置为2即可

    innodb_online_alter_log_max_size

    online DDL期间,DDL 表的数据更改操作会记录到一个临时日志中,默认大小是128M,建议设置为1G,避免过小导致DDL失败。

    innodb_autoinc_lock_mode

    自增锁模式,简单来说:

    默认值1,批量插入(不确定行数)时会有表级的自增锁,能保证 statement-based replication 的安全性,并发的批量插入性能会差些;

    建议值2,批量插入(不确定行数)时不再有表级自增锁,即并发批量插入性能提升,但是需要row-based replication 才能保证复制安全。

    binlog格式规范是 row 格式,建议设置为2。如果 binlog_format 非 row,必须使用默认值1。

    innodb_undo_tablespaces

    设置独立undo log表空间数量,将undo log从ibdata1中分离到独立的表空间,防止undo log过大导致ibdata1过大(ibdata1无法释放空间)。建议设置为3,大于1时才能使用空间自动回收机制,只有在初始化时设置才有效。

    innodb_undo_log_truncate

    启用后,将超过innodb_max_undo_log_size定义大小的undo log表空间标记为删除。

    innodb_max_undo_log_size

    设置undo log表空间的最大值。

    日志相关:

    参数名

    说明

    binlog_format

    binlog 格式,row格式保证复制安全

    sync_binlog

    binlog 刷盘策略,必须为1:

    0:binlog 的刷盘交由操作系统控制。性能最好,安全性最差。

    1:每次 sync_binlog commit groups 后都将 binlog 刷盘。性能最差,安全性最高。

    n(n>1):每 n 次 sync_binlog commit groups 后将 binlog 刷盘。兼顾性能和安全,有丢失事务的风险。

    binlog_error_action

    控制当服务器遇到错误时发生的情况,例如无法写入,刷新或同步二进制日志,这可能导致主服务器的二进制日志变得不一致,进而影响从库复制错误。

    在MySQL 5.7.7及更高版本中,此变量默认为ABORT_SERVER,当服务器在遇到二进制日志写入错误时会暂停日志记录并关闭mysqld。

    master_info_repository

    记录复制通道主库信息,以及slave io thread 读取主库binlog position。设置为FILE则将信息保存在文件中,有丢失风险,设置为TABLE则将信息保存在InnoDB 表中,通过InnoDB机制保证不丢失,必须设置为TABLE。

    relay_log_info_repository

    记录复制通道slave sql thread信息,主要是已经回放relay-log位点信息。设置为FILE则将信息保存在文件中,有丢失风险,设置为TABLE则将信息保存在InnoDB 表中,通过InnoDB机制保证不丢失。

    回放位点如果丢失或者错误,会导致复制错误、主从数据不一致,必须为TABLE。

    relay_log_recovery

    启动复制时自动恢复relay-log,恢复过程会创建新的relay-log,删除旧的未回放的relay-log,并将slave io thread位点初始化为 slave sql thread已经回放relay-log的位点,重新获取binlog。是保证主从数据一致的重要参数,必须设置为1。

    slow_query_log

    慢查询日志,方便后续抓取慢查询SQL进行优化,建议开启。

    long_query_time

    定义sql执行时间的阈值,超过这个阈值,则记录到慢查询日志。模板中为5s,如果有需求请进行调整。

    复制:

    参数名

    说明

    rpl_semi_sync_master_enabled

    主库半同步复制开关,设置后,重启复制生效(只有从库也开启半同步才有效)。

    rpl_semi_sync_slave_enabled

    从库半同步复制开关,设置后,重启复制生效(只有主库也开启半同步才有效)。在默认开启半同步复制的架构中,也建议设置为0,因为如果在从库slave io thread延迟很大的情况下开启半同步,主库会长时间等待从库返回ACK,导致主库无法写入数据。应该在确认从库延迟很小的情况下动态开启从库的半同步复制。

    rpl_semi_sync_master_timeout

    主库等待从库返回ACK的超时时间,如果超过这个时间还没收到从库ACK,则降级为异步复制。此参数设置需要考虑RPO与RTO:

    如果RTO要求高,则尽量设置小,尽快降级而不让业务阻塞;

    如果RPO要求高,且RPO是依靠半同步复制保障,则尽量设置大些,不允许MySQL通过自己的超时机制降级。这点需要与外部高可用软件配合,什么情况下可降级,或者人工判断。

    rpl_semi_sync_master_wait_for_slave_count

    主库等待从库返回ACK的数量,达到设定值主库事务才能提交。一般来说只需要保证1个从库的binlog与主库实时同步即可,设置为1。具体设置随高可用架构设计来修改。

    rpl_semi_sync_master_wait_no_slave

    在任意超时时间内,当主库的从库数量少于rpl_semi_sync_master_wait_for_slave_count参数指定数量时,如果rpl_semi_sync_master_wait_no_slave=OFF,半同步会立刻降级为异步;如果rpl_semi_sync_master_wait_no_slave=ON,半同步要等超时时间才会降级为异步。

    slave-parallel-type

    并行复制模式,需要设置为LOGICAL_CLOCK才能使用基于组提交的并行复制,才能真正提升从库复制的性能,减小延迟。

    slave_parallel_workers

    复制工作线程的数量,建议值16,如果业务写主库的并发度大,可以调大。

    slave_preserve_commit_order

    从库并行回放时,开启此参数,保证提交顺序与relay log中事务顺序相同。

    slave_rows_search_algorithms

    在row-based replication中,这个参数控制从库如何搜索匹配的数据行。默认设置时,当表上无主键,对于在该表上做的DML,则每一个行记录前镜像在备库都可能产生一次全表扫描。

    推荐设置:INDEX_SCAN,HASH_SCAN,对于在一个ROWS EVENT中的所有前镜像收集起来,然后在一次扫描全表时,判断HASH中的每一条记录进行更新,可以部分解决无主键表导致的复制延迟问题。

    (注意:HASH_SCAN在同一行数据同时更新多次时,会导致无法找到行记录,如果无法接受请使用默认值)

    其他:

    参数名

    说明

    validate-password

    指定密码策略插件的加载方式,设置为FORCE_PLUS_PERMANENT,告诉mysqld在启动时加载插件并防止在服务器运行时删除它。

    validate_password_policy

    密码策略类型,可设置0,1,2或者LOW, MEDIUM, STRONG。分别代表不同的强度要求,一般设置为MEDIUM:Length,numeric,lowercase/uppercase,and special characters

    performance-schema-instrument

    performance_schema的额外设置,建议开启元数据锁监控和内存消耗监控,方便后续运维过程中排查问题。

    innodb_numa_interleave

    启用NUMA交错内存分配策略来分配InnoDB缓冲池,在支持NUMA 的操作系统上才可以启用生效。

    5. 安装MySQL

    MySQL安装有三种方式,分别为编译安装、rpm安装、二进制包安装,其实也是代表了三种介质。当下载源码包时需要进行编译,编译安装比较麻烦,还需要处理编译时可能发生的错误,耗时长;下载rpm包时使用rpm方式安装,但是不便于多实例安装;下载二进制包,只需要配置my.cnf 并进行初始化即可完成安装,是最方便最容易制定规范的安装方式。本文步骤就是二进制包安装方式。

    安装前的准备工作:下载二进制安装包、解压安装包。

    下载:

    下载地址在2.1章节中有,在页面选择版本和操作系统(Linux-Generic)后会出现安装包列表,选择类似“Linux - Generic (glibc 2.12) (x86, 64-bit), Compressed TAR Archive”的即可。

    解压:

    使用tar zxf 命令解压,并将解压后的目录重命名为 basedir:

    # tar zxf mysql-5.7.25-linux-glibc2.12-x86_64.tar.gz

    # mv mysql-5.7.25-linux-glibc2.12-x86_64 /data/mysql_base

    5.1 创建MySQL运行用户

    给mysqld进程单独分配一个运行用户,规范用户为:mysql

    groupadd mysql

    useradd -m mysql –g mysql

    5.2 创建相关目录

    如果对于目录规范有参考4.1章节,初始化时只会自动创建datadir的最后一层目录,即只会自动创建 /data/mysql_data/ 目录下的 3333 目录。所以初始化前需要创建好对应的目录并修改owner:

    mkdir -p /data/mysql_data/3333

    mkdir -p /log/mysql/binlog/3333

    mkdir -p /log/mysql/relaylog/3333

    mkdir -p /log/mysql/redolog/3333

    mkdir -p /data/mysql_tmp

    chown  mysql.mysql  /data/mysql_data/3333

    chown  mysql.mysql  /log/mysql/binlog/3333

    chown  mysql.mysql  /log/mysql/relaylog/3333

    chown  mysql.mysql  /log/mysql/redolog/3333

    chown  mysql.mysql  /data/mysql_tmp

    5.3 修改my.cnf

    在basedir下编辑 my.cnf,将my.cnf.5.7_for_general 模板内容贴进 my.cnf,并按照4.2章节说明修改部分参数。

    5.4 初始化

    # /data/mysql_base/bin/mysqld --defaults-file=/data/mysql_base/my.cnf --initialize --user=mysql

    5.5 修改root密码

    MySQL5.7初始化使用“—initialize”参数会自动为'root'@'localhost'设置一个随机密码,并标记为过期。必须先从mysql-error.log中找到随机初始密码,登录后修改root密码,否则不允许做任何操作:

    i.先启动mysqld

    # /data/mysql_base/bin/mysqld_safe --defaults-file=/data/mysql_base/my.cnf &

    ii.登录mysqld修改root密码

    mysql> alter user 'root'@'localhost' identified by '1qaz@WSX';

    6. MySQL 服务管理配置

    6.1 设置环境变量

    为了方便以后使用MySQL相关程序,可以将basedir设置到环境变量,避免每次都输入完整的MySQL basedir路径。

    i.在 /etc/profile 文件中添加:

    # vim /etc/profile

    export MYSQL_HOME=/data/mysql_base/bin

    export PATH=$MYSQL_HOME:$PATH

    ii.重载/etc/profile使修改生效:

    # source /etc/profile

    6.2 配置systemd

    在5.5章节我们使用mysqld_safe启动了mysqld服务,这样的方式不是特别方便,尤其是关闭mysqld时,需要使用mysqladmin shutdown 这样的命令。所以在RHEL/CentOS 7上我们使用systemd来管理mysqld服务。

    i. 在 /etc/systemd/system 目录下创建MySQL的systemd配置文件mysql_3333.service

    (注意标红的地方需要根据实际情况修改)

    # vim /etc/systemd/system/mysqld_3333.service

    [Unit]

    Description=MySQL Server

    Documentation=man:mysqld(8)

    Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html

    After=network.target

    After=syslog.target

    [Install]

    WantedBy=multi-user.target

    [Service]

    User=mysql

    Group=mysql

    # 启动结束后会发出通知信号,systemd 接下来可以启动其他服务,在容器中可能需要设置为forking(启动一个子进程,并且启动后父进程会退出)

    #Type=notify

    Type=forking

    PIDFile=/data/mysql_data/3333/mysqld.pid

    # Disable service start and stop timeout logic of systemd for mysqld service.

    TimeoutSec=0

    # Start main service

    ExecStart=/data/mysql_base/bin/mysqld --defaults-file=/data/mysql_base/my.cnf --daemonize $MYSQLD_OPTS –user=mysql

    # Use this to switch malloc implementation

    EnvironmentFile=-/etc/sysconfig/mysql

    # Sets open_files_limit

    LimitNOFILE = 65535

    # 守护,意外的停止会被重启

    Restart=on-failure

    #设置安全退出码,不会被自动重启

    RestartPreventExitStatus=1

    # Set environment variable MYSQLD_PARENT_PID. This is required for restart.

    Environment=MYSQLD_PARENT_PID=1

    # 设置私有的 tmpdir,建议设置为 false 关闭默认

    PrivateTmp=false

    ii. 设置开机自启动

    # systemctl enable mysql_3333.service

    iii. 启停mysqld

    # systemctl start mysql_3307

    # systemctl stop mysql_3333

    iv. 查看 mysqld 状态

    # systemctl status mysql_3333

    如果需要修改systemd配置文件,修改完需要重载配置:

    # systemctl daemon-reload mysql_3333

  • 相关阅读:
    Linux Cannot allocate memory问题
    Linux后台运行Jar方法
    盒模型:外边距叠加和外边距为负值
    HTML如何创建二级目录
    css3实现立方体,并且自转效果
    前台技术--页面跳转的几种用法
    JS实现网站内容的禁止复制和粘贴、另存为
    网络爬虫大白话解析
    HTML5 canvas绘制arcTo、translate和rotate的画法探索
    HTML5实战与剖析之原生拖拽(一拖拽历史概述)
  • 原文地址:https://www.cnblogs.com/DJRemix/p/14238552.html
Copyright © 2011-2022 走看看