#环境准备

  1. su - root
  2. --查看当前防火墙状态
  3. systemctl status firewalld
  4. --关闭当前防火墙
  5. systemctl stop firewalld
  6. --设置开机防火墙不启动
  7. systemctl disable firewalld
  8. #yum源安装
  9. yum install -y libaio-devel
  10. yum -y install numactl

#清理历史环境

  1. rpm -qa |grep mariadb
  2. yum -y install numactl
  3. yum remove mariadb-libs.x86_64

#创建用户和组

  1. useradd mysql -s /sbin/nologin
  2. [root@smkrac111 mysql]# id mysql
  3. uid=1005(mysql) gid=1007(mysql) groups=1007(mysql)

#上传并解压 MySQL软件到/app/

  1. [root@db01 app]# mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql
  2. [root@db01 app]# ls -l /app/mysql/

#创建相关目录

  1. #创建软件目录
  2. mkdir -p /app/database
  3. #创建数据目录
  4. mkdir -p /data/3306
  5. #创建日志目录
  6. mkdir -p /binlog/3306

#设置权限

  1. chown -R mysql:mysql /app/ /data/ /binlog

#设置环境变量

  1. vi /etc/profile
  2. #底部添加一行
  3. export PATH=/app/database/mysql/bin:$PATH
  4. #生效配置
  5. source /etc/profile

cd
#初始化系统库表

  1. mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
  2. ================================================================================================初始化过程(成功)======================================================================================
  3. 2020-07-31T02:14:39.376798Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
  4. 2020-07-31T02:14:39.696143Z 0 [Warning] InnoDB: New log files created, LSN=45790
  5. 2020-07-31T02:14:39.767299Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
  6. 2020-07-31T02:14:39.832986Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 96cf6b3f-d2d3-11ea-bcdd-005056b18ce8.
  7. 2020-07-31T02:14:39.835927Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
  8. 2020-07-31T02:14:41.268767Z 0 [Warning] CA certificate ca.pem is self signed.
  9. 2020-07-31T02:14:41.533924Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
  10. ===============================================================================================================================================================================================
  11. #容易遇到的报错
  12. [error] --initialize specified but the data directory has file in it. Aborting
  13. #处理
  14. rm -rf /data/3306/*

#补充:初始化方式:

  1. (1)mysqld --initialize --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
  2. 1.初始化完成后,会有12位临时密码,但是必须在使用MySQL之前重置这个密码
  3. 2.密码管理使用严格模式:3种密码复杂度
  4. (2)mysqld --initialize-insecure --user=mysql --basedir=/app/database/mysql --datadir=/data/3306
  5. 5.6版本初始化方式
  6. /app/database/mysql/scripts/mysql_install_db --user=mysql --basedir=/app/database/mysql --datadir=/data/3306

#配置文件设置

  1. cat >/etc/my.cnf <<EOF
  2. [mysqld]
  3. user=mysql
  4. basedir=/app/database/mysql
  5. datadir=/data/3306
  6. server_id=6
  7. port=3306
  8. socket=/tmp/mysql.sock
  9. explicit_defaults_for_timestamp=true
  10. innodb_file_per_table=on
  11. character_set_server=utf8
  12. log_bin=/data/mysql/1.000001
  13. expire_logs_days=30
  14. slow_query_log=on
  15. long_query_time=3
  16. log_queries_not_using_indexes=on
  17. max_connections=500
  18. symbolic-links=0
  19. innodb_page_size=16384
  20. innodb_buffer_pool_size=100000000
  21. [mysql]
  22. socket=/tmp/mysql.sock
  23. EOF

准备MySQL的启动脚本

  1. cd /app/database/mysql/support-files
  2. #拷贝MySQL的启动脚本值系统软件管理目录中
  3. cp mysql.server /etc/init.d/mysqld

使用systemd管理mysql

  1. cat >/etc/systemd/system/mysqld.service <<EOF
  2. [Unit]
  3. Description=MySQL Server
  4. Documentation=man:mysqld(8)
  5. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  6. After=network.target
  7. After=syslog.target
  8. [Install]
  9. WantedBy=multi-user.target
  10. [Service]
  11. User=mysql
  12. Group=mysql
  13. ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/etc/my.cnf
  14. LimitNOFILE = 5000
  15. EOF

启动MySQL数据库

  1. #centos 6 (7也可以)
  2. service mysqld start
  3. #centos 7
  4. chkconfig --add mysqld
  5. systemctl start mysqld

修改MySQL密码

  1. mysql
  1. set password=password('mysql');

mysql 多实例安装

创建目录

  1. mkdir -p /data/330{7,8,9}/data
  2. mkdir -p /binlog/330{7,8,9}
  3. chown -R mysql:mysql /data/330{7,8,9}/data
  4. chown -R mysql:mysql /binlog/330{7,8,9}

修改配置文件

  1. cat > /data/3307/my.cnf <<EOF
  2. [mysqld]
  3. basedir=/app/database/mysql
  4. datadir=/data/3307/data
  5. socket=/data/3307/mysql.sock
  6. log_error=/data/3307/mysql.log
  7. port=3307
  8. server_id=7
  9. log_bin=/data/3307/mysql-bin
  10. EOF
  11. cat > /data/3308/my.cnf <<EOF
  12. [mysqld]
  13. basedir=/app/database/mysql
  14. datadir=/data/3308/data
  15. socket=/data/3308/mysql.sock
  16. log_error=/data/3308/mysql.log
  17. port=3308
  18. server_id=8
  19. log_bin=/data/3308/mysql-bin
  20. EOF
  21. cat > /data/3309/my.cnf <<EOF
  22. [mysqld]
  23. basedir=/app/database/mysql
  24. datadir=/data/3309/data
  25. socket=/data/3309/mysql.sock
  26. log_error=/data/3309/mysql.log
  27. port=3309
  28. server_id=9
  29. log_bin=/data/3309/mysql-bin
  30. EOF

初始化数据

  1. mv /etc/my.cnf /etc/my.cnf.bak
  2. mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/database/mysql
  3. mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/database/mysql
  4. mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/app/database/mysql

准备启动脚本

  1. cat >/etc/systemd/system/mysqld3307.service <<EOF
  2. [Unit]
  3. Description=MySQL Server
  4. Documentation=man:mysqld(8)
  5. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  6. After=network.target
  7. After=syslog.target
  8. [Install]
  9. WantedBy=multi-user.target
  10. [Service]
  11. User=mysql
  12. Group=mysql
  13. ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
  14. LimitNOFILE = 5000
  15. EOF
  16. cat >/etc/systemd/system/mysqld3308.service <<EOF
  17. [Unit]
  18. Description=MySQL Server
  19. Documentation=man:mysqld(8)
  20. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  21. After=network.target
  22. After=syslog.target
  23. [Install]
  24. WantedBy=multi-user.target
  25. [Service]
  26. User=mysql
  27. Group=mysql
  28. ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
  29. LimitNOFILE = 5000
  30. EOF
  31. cat >/etc/systemd/system/mysqld3309.service <<EOF
  32. [Unit]
  33. Description=MySQL Server
  34. Documentation=man:mysqld(8)
  35. Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
  36. After=network.target
  37. After=syslog.target
  38. [Install]
  39. WantedBy=multi-user.target
  40. [Service]
  41. User=mysql
  42. Group=mysql
  43. ExecStart=/app/database/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
  44. LimitNOFILE = 5000
  45. EOF

启动多实例

  1. systemctl start mysqld3307
  2. systemctl start mysqld3308
  3. systemctl start mysqld3309

检查

  1. netstat -tulnp