zoukankan      html  css  js  c++  java
  • MySQL数据库的安装

    1 总体规划

    MySQL可运行的最小资源需求极低。InnoDB缓冲池的默认大小仅128M。基于基准测试数据,MySQL内存占用从1G到64G运行效率提升明显,CPU从1核至48核运行效率提升明显,进一步增加资源性能提升趋于平缓。而建议单数据库主机数据库内存设置在40%-60%左右。建议主机内存不超过126G,CPU核数不超过48核。

    操作系统

    CentOS Linux release 7.5.1804

    处理器

    1

    内存

    4G

    硬盘

    38G

    主机名称

    chenzx

    IP地址

    192.168.56.8

    1.1 用户组和用户规划

    MySQL数据库建议运行在特定的用户与用户组下。对于同一主机安装不同MySQL数据库的场景,建议使用不同的用户管理不同的数据库。

    用户ID

    用户名称

    用户组ID

    用户组名称

    备注

    1001

    mysql

    1001

    mysql

    数据库操作系统用户

    表-用户组规划

    用户不存在则很使用以下命令创建:

    # groupadd -g 1001 mysql

    # useradd –u 1001 –g mysql mysql

    若已存在则使用以下命令修改:

    # groupmod -g 1001 mysql

    # usermod -s /bin/bash -u 1001 mysql

    1.2 网络规划

    应用通过服务IP接入PROD数据库,故障时通过服务IP的漂移实现高可用性。本文不涉及高可用部分,需要开放3306端口,固定IP用于复制接入,服务IP用于应用接入。

    接口名

    主机名

    IP地址

    端口

    描述

    ens32

    chenzx

    192.168.5.68

    3306

    固定IP地址

    1.3 数据库文件系统规划

    数据库相关文件系统规划,一个好的文件系统规划,有利于后续运维人员进行维护。

    路径

    文件系统大小

    功能说明

    /mysql/mysql_data

    200GB

    数据目录,存放数据文件,大小根据数据量而定。

    /mysql/mysql_log

    200GB

    数据库redo、bin-log、relay-log等日志,可以根据具体需求再进行拆分。

    /mysql/mysql_dump

    100GB

    备份目录,数据库备份或者其他数据文件备份。

    创建相关目录:

    # mkdir –p /mysql/mysql_data

    # mkdir –p /mysql/mysql_log

    # mkdir –p /mysql/mysql_dump

    修改相关目录的属组信息:

    # chown –R mysql:mysql /mysql/mysql_data

    # chown –R mysql:mysql /mysql/mysql_log

    # chown –R mysql:mysql /mysql/mysql_dump

    数据库目录规划:

    路径

    功能说明

    /mysql/mysql-5.7.23

    区分版本的软件安装目录,软连接(/usr/local/mysql)指向目录

    /home/mysql

    mysql用户家目录

    /mysql/mysql_data/mysql

    数据目录,存放数据文件

    /mysql/mysql_data/tmp

    临时数据目录

    /mysql/mysql_log/redolog

    redo日志目录

    /mysql/mysql_log/binlog

    二进制日志目录

    /mysql/mysql_log/relaylog

    复制用中继日志目录

    /mysql/mysql_log/slowlog

    指定慢查询日志目录

    /mysql/mysql_log/innodb

    InnoDB日志目录

    /mysql/mysql_log/errlog

    错误日志目录

    创建相关目录:

    # mkdir –p /mysql/mysql_log/redolog

    # mkdir –p /mysql/mysql_log/binlog

    # mkdir –p /mysql/mysql_log/relaylog

    # mkdir –p /mysql/mysql_log/slowlog

    # mkdir –p /mysql/mysql_log/innodb

    # mkdir –p /mysql/mysql_log/errlog

    修改相关目录的属组信息:

    # chown –R mysql:mysql /mysql/mysql_log/redolog

    # chown –R mysql:mysql /mysql/mysql_log/binlog

    # chown –R mysql:mysql /mysql/mysql_log/relaylog

    # chown –R mysql:mysql /mysql/mysql_log/slowlog

    # chown –R mysql:mysql /mysql/mysql_log/innodb

    # chown –R mysql:mysql /mysql/mysql_log/errlog

    注意:

    MySQL数据目录规划因根据数据库预计承载的数据量而定,当超过1T时,建议规划多个数据目录。

    MySQL安装目录所在的文件系统,建议保持15G左右的空闲,用于后续升级。

    MySQL redo日志目录大小应根据数据库日常写入量而定,建议15G左右。

    MySQL 二进制日志存放归档的操作记录,根据数据库的繁忙程度,建议在50-100G左右。

    如果是集群架构,需要计划中继日志目录。中继日志大小根据主库二进制日志产生量而定,一般是主库二级制目录大小的50%。

    2 系统参数配置

    3 MySQL安装

    3.1 下载mysql介质

    本文主要介绍MySQL社区版二进制软件包的安装过程。一般情况下,PROD环境和TEST环境都应该选用GA版本,切勿使用DMR版本、RC版本和Beta版本。二进制软件包可以到官网(https://www.mysql.com/downloads/)进行下载。

    clip_image002

    点击社区版本后进入下一个界面,选择“MySQL Community Server”。

    clip_image004

    3.2 上传介质并校验

    使用scp或者ftp等工具把安装包(mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz)上传至服务器,并使用命令生成软件安装包的md5码与官网md5码进行比对:

    $ md5sum mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz

    比对结果必须一致!!!

    官网提供MD5码

    下载后生成MD5码

    比对结果

    d903d3dbf235b74059a4b3e216c71161

    d903d3dbf235b74059a4b3e216c71161

    一致

    3.3 安装MySQL

    二进制的安装方式中,官方版本中已经把所有功能都配置好了,安装使用起来方便简单。

    1) 解压安装包

    $ su - mysql

    $ tar -zxvf mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz -C /mysql/

    2) 解压文件改名

    $ su - mysql

    $ mv mysql-5.7.23-linux-glibc2.12-x86_64/ mysql-5.7.23/

    3) 建立软链接

    $ su -

    # ln -s /mysql/mysql-5.7.23/ /usr/local/mysql

    # chown mysql:mysql -R /usr/local/mysql

    3.4 初始化MySQL

    由于是二进制安装,数据库的配置文件需要自己配置。

    $ cat /etc/my.cnf

    [mysql]

    prompt="u@h:p R:m:s [d]>"

    [client]

    port=3306

    socket=/tmp/mysql.sock

    [mysql_multi]

    mysqld = /usr/local/mysql/bin/mysqld

    mysqladmin = /usr/local/mysql/bin/mysqladmin

    user = mysql

    [mysqld]

    ############################ system ##################################

    basedir = /usr/local/mysql

    server-id = 189

    port = 3306

    user = mysql

    read_only = off

    character-set-server = utf8

    socket = /tmp/mysql.sock

    datadir = /mysql/mysql_data/mysql

    lower_case_table_names = 1

    sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    show_compatibility_56 = on

    #skip_slave_start = 1

    explicit_defaults_for_timestamp = ON

    skip-name-resolve

    log_timestamps = SYSTEM

    #skip_grant_tables

    ############################ log ##################################

    max-binlog-size = 1G

    binlog_cache_size = 2097152

    master_info_repository = TABLE

    innodb_log_group_home_dir = /mysql/mysql_log/innodb/

    log-bin = /mysql/mysql_log/binlog/logbin.log

    relay_log = /mysql/mysql_log/relaylog/relay.log

    log-error = /mysql/mysql_log/errlog/error.err

    slow-query-log-file = /mysql/mysql_log/slowlog/slow.log

    slow-query-log = 1

    long_query_time = 1

    relay_log_info_repository = TABLE

    relay_log_recovery = 1

    slave_preserve_commit_order = 1

    log-queries-not-using-indexes = 0

    expire_logs_days = 7

    binlog_format = row

    sync-binlog = 1

    log_bin_trust_function_creators = 1

    ########################### connection ##############################

    open-files-limit = 65535

    symbolic-links = 0

    max_allowed_packet = 1024M

    max_connections = 3000

    max_user_connections = 3000

    max_connect_errors = 1000000

    transaction_isolation = READ-COMMITTED

    ########################### BUFFER ##############################

    query-cache-type = 0

    query-cache-size = 0

    thread-cache-size = 50

    innodb_buffer_pool_size = 2G

    innodb_buffer_pool_instances = 8

    innodb_buffer_pool_load_at_startup = 1

    innodb_buffer_pool_dump_at_shutdown = 1

    innodb_print_all_deadlocks = 1

    innodb_log_file_size = 1G

    innodb_log_buffer_size = 16M

    innodb_flush_log_at_trx_commit = 1

    innodb_log_files_in_group = 3

    ################GTID#################

    #gtid_mode = 1

    #enforce_gtid_consistency = 1

    slave_parallel_workers = 4

    slave_parallel_type = LOGICAL_CLOCK

    slave_preserve_commit_order = 1

    log_slave_updates = 1

    [mysqld_safe]

    log-error = /mysql/mysql_log/errlog/error.err

    pid-file = /mysql/mysql.pid

    注意:

    MySQL读取配置文件的顺序是

    1) /etc/my.cnf

    2) /etc/mysql/my.cnf

    3) /usr/local/mysql/etc/my.cnf~/.my.cnf

    创建数据库

    $ /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/mysql/mysql_data/mysql --user=mysql --initialize

    3.5 启动MySQL

    $ /usr/local/mysql/bin/mysqld_safe --user=mysql&

  • 相关阅读:
    svn中trunk、branches、tags
    支付宝支付对接过程
    分享插件
    ES6学习笔记
    VS code
    Angular45
    React笔记
    查询Table name, Column name, 拼接执行sql文本, 游标, 存储过程, 临时表
    通过脚本把远程服务器上的表和数据拷贝到本地数据库
    mongo客户端mongo VUE增删改查
  • 原文地址:https://www.cnblogs.com/nolanchan/p/9890060.html
Copyright © 2011-2022 走看看