date: 2020-08-11title: mysql-5.7.23安装脚本 #标题
tags: mysql #标签
categories: shell # 分类

记录下mysql二进制离线部署脚本。

  1. # tree install-mysql-5.7.23 # 目录结构
  2. install-mysql-5.7.23
  3. ├── install.log # 脚本安装过程中产生的日志
  4. ├── install-mysql-5.7.23.sh # 安装脚本
  5. ├── libaio-0.3.109-13.el7.x86_64.rpm # 某些系统需要此rpm包
  6. ├── my.cnf # mysql主配置文件
  7. └── mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz # mysql二进制包
  8. # cat install-mysql-5.7.23.sh # 安装脚本内容如下
  9. #!/usr/bin/env bash
  10. init_mysql_root_passwd='cF!TSadGT6y%'
  11. tar_pkg="mysql-5.7.23-linux-glibc2.12-x86_64.tar.gz"
  12. cur_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
  13. mysql_home=/app/usr/mysql-5.7.23/
  14. mysql_3306=${mysql_home}mysql-3306/
  15. mysql_data=${mysql_3306}data
  16. install_log=${cur_dir}/install.log
  17. item=1
  18. h2() {
  19. printf "\n${underline}${bold}${white}%s${reset}\n" "$@"
  20. }
  21. h2 "[Step $item]: 确认执行此脚本用户是否为root..."; let item+=1
  22. if [[ ${USER} != root ]];then
  23. echo -e "\033[31m
  24. 此脚本必须使用 root 执行
  25. 当前用户为 ${USER}
  26. 正在退出脚本...
  27. \033[0m"
  28. sleep 1 && exit 1
  29. fi
  30. mkdir -p ${mysql_3306}/{data,logs}
  31. id mysql &> /dev/null || useradd -M -s /sbin/nologin mysql &>> ${install_log}
  32. set -e
  33. h2 "[Step $item]: 解压..."; let item+=1
  34. cd ${cur_dir}
  35. rpm -ivh libaio-0.3.109-13.el7.x86_64.rpm &>> ${install_log}
  36. tar zxf ${tar_pkg} -C ${mysql_home} --strip-components=1
  37. cp ${cur_dir}/my.cnf ${mysql_3306}
  38. h2 "[Step $item]: 配置环境变量..."; let item+=1
  39. cat >> /etc/profile <<EOF
  40. PATH=${mysql_home}bin/:\$PATH
  41. EOF
  42. source /etc/profile
  43. h2 "[Step $item]: 初始化..."; let item+=1
  44. mysqld --initialize --user=mysql --datadir=${mysql_data} --basedir=${mysql_home} &>> ${install_log}
  45. tmp_passwd=$(grep root@localhost ${install_log} | awk -F 'root@localhost: ' '{print $2}')
  46. h2 "[Step $item]: 启动mysql..."; let item+=1
  47. mysqld_safe --defaults-file=${mysql_3306}my.cnf &>> ${install_log} &
  48. sleep 8
  49. # 修改root密码
  50. if [[ $(ss -lnput | grep 3306 | wc -l) -ne 0 ]];then
  51. mysqladmin -uroot -p''${tmp_passwd}'' password ''${init_mysql_root_passwd}''
  52. echo -e "\033[33m
  53. Mysql 启动成功, 数据库root密码为: ${init_mysql_root_passwd} ,请妥善保管!
  54. 请执行指令 source /etc/profile 重新加载环境变量。
  55. \033[0m"
  56. fi
  57. # cat my.cnf # 主配置文件如下
  58. [client]
  59. port=3306
  60. socket=/tmp/mysql.sock
  61. default-character-set=utf8
  62. [mysql]
  63. port=3306
  64. socket=/tmp/mysql.sock
  65. default-character-set=utf8
  66. [mysqld]
  67. port=3306
  68. character-set-server=utf8
  69. socket=/tmp/mysql.sock
  70. basedir=/app/usr/mysql-5.7.23/
  71. datadir=/app/usr/mysql-5.7.23/mysql-3306/data
  72. explicit_defaults_for_timestamp=true
  73. federated
  74. lower_case_table_names=1
  75. secure_file_priv =/app/usr/mysql-5.7.23/mysql-3306
  76. back_log=150
  77. max_connections=3000
  78. max_connect_errors=10
  79. table_open_cache=2048
  80. external-locking=FALSE
  81. secure_file_priv =
  82. max_allowed_packet=32M
  83. sort_buffer_size=8M
  84. join_buffer_size=8M
  85. thread_cache_size=8
  86. query_cache_size=512M
  87. query_cache_limit=4M
  88. transaction_isolation=REPEATABLE-READ
  89. tmp_table_size=96M
  90. max_heap_table_size=96M
  91. ###***slow query parameters
  92. long_query_time=1
  93. slow_query_log = 1
  94. slow_query_log_file=/app/usr/mysql-5.7.23/mysql-3306/logs/slow.log
  95. #***MyISAM parameters
  96. key_buffer_size=32M
  97. read_buffer_size=2M
  98. read_rnd_buffer_size=16M
  99. bulk_insert_buffer_size=64M
  100. myisam_sort_buffer_size = 16M
  101. myisam_max_sort_file_size = 16M
  102. myisam_repair_threads = 1
  103. skip-name-resolve
  104. ###***master-slave replication parameters
  105. server-id=14063
  106. #slave-skip-errors=all
  107. #***Innodb storage engine parameters
  108. innodb_buffer_pool_size=8192M
  109. innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:5G
  110. innodb_data_file_path=ibdata1:10M:autoextend
  111. #innodb_file_io_threads=8
  112. #innodb_thread_concurrency=16
  113. innodb_flush_log_at_trx_commit=1
  114. innodb_log_buffer_size=16M
  115. innodb_log_file_size=128M
  116. innodb_log_files_in_group=3
  117. innodb_max_dirty_pages_pct=90
  118. innodb_buffer_pool_dump_pct=90
  119. innodb_lock_wait_timeout=2
  120. innodb_file_per_table=on
  121. [mysqldump]
  122. quick
  123. max_allowed_packet=32M
  124. [myisamchk]
  125. key_buffer=16M
  126. sort_buffer_size=16M
  127. read_buffer=8M
  128. write_buffer=8M
  129. [mysqld_safe]
  130. open-files-limit=8192