install_mysql.sh

    1. #!/bin/bash
    2. # 端口
    3. PORT=${1}
    4. # mysql版本
    5. LEVEL=${2}
    6. # 是否多实例, 0, 1
    7. MULTI=${3}
    8. mysqlpackage="/usr/local"
    9. mysqldatapack="/data/mysql"
    10. cat > /etc/my.cnf <<EOFINMYSQLD
    11. [mysql]
    12. no-auto-rehash
    13. prompt='\\u@\\h:\\d \\v \\r:\\m:\\s> '
    14. default-character-set=utf8mb4
    15. show-warnings
    16. [mysqld]
    17. user=mysql
    18. pid-file=/data/mysql/mysqldata${PORT}/sock/mysql.pid
    19. port=${PORT}
    20. socket=/data/mysql/mysqldata${PORT}/sock/mysql.sock
    21. datadir=/data/mysql/mysqldata${PORT}/mydata
    22. tmpdir=/data/mysql/mysqldata${PORT}/tmpdir
    23. slave-load-tmpdir=/data/mysql/mysqldata${PORT}/tmpdir
    24. general-log-file=/data/mysql/mysqldata${PORT}/log/general.log
    25. log-error=/data/mysql/mysqldata${PORT}/log/error.log
    26. slow-query-log-file=/data/mysql/mysqldata${PORT}/log/slow-query.log
    27. server-id=${PORT}
    28. log-bin-index=/data/mysql/mysqldata${PORT}/binlog/mysql-bin.index
    29. log-bin=/data/mysql/mysqldata${PORT}/binlog/mysql-bin
    30. sync-binlog=10
    31. relay-log-index=/data/mysql/mysqldata${PORT}/relaylog/mysql-relay-bin.index
    32. relay-log=/data/mysql/mysqldata${PORT}/relaylog/mysql-relay-bin
    33. character-set-server=utf8mb4
    34. collation-server=utf8mb4_general_ci
    35. innodb-buffer-pool-size=`free -m | grep Mem | awk '{print $2*1024*0.8}'`
    36. innodb-data-home-dir=/data/mysql/mysqldata${PORT}/innodb_ts
    37. innodb-data-file-path=ibdata1:4096M:autoextend
    38. innodb-log-group-home-dir=/data/mysql/mysqldata${PORT}/innodb_log
    39. innodb-log-file-size=128M
    40. innodb-flush-log-at-trx-commit=2
    41. innodb-io-capacity=100
    42. innodb-force-recovery=0
    43. gtid-mode=ON
    44. enforce-gtid-consistency
    45. sql-mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
    46. EOFINMYSQLD
    47. # 解压二进制包到指定目录
    48. mysqlpackexists=`ls -l ${mysqlpackage} | grep mysql`
    49. if [[ ${mysqlpackexists} == "" ]];then
    50. if [[ ${LEVEL} == "5.7" ]];then
    51. tar -zxvf ./mysql-${LEVEL}* -C ${mysqlpackage}
    52. fi
    53. if [[ ${LEVEL} == "8.0" ]];then
    54. tar -xvf ./mysql-${LEVEL}.*.tar -C ${mysqlpackage}
    55. fi
    56. else
    57. echo "mysql binary package is already exists!"
    58. fi
    59. if [ ! -d ${mysqlpackage}/mysql ];then
    60. ln -s ${mysqlpackage}/mysql-${LEVEL}* ${mysqlpackage}/mysql
    61. fi
    62. # 拷贝mysql.server
    63. if [ ! -f /etc/init.d/mysqld ];then
    64. cp ${mysqlpackage}/mysql/support-files/mysql.server /etc/init.d/mysqld
    65. fi
    66. # 创建用户
    67. userexists=`cat /etc/passwd | grep mysql`
    68. if [[ ${userexists} == "" ]];then
    69. useradd mysql
    70. else
    71. echo "user mysql is already exists!"
    72. fi
    73. # 创建目录
    74. if [ ! -d ${mysqldatapack}/mysqldata${PORT} ];then
    75. mkdir -p ${mysqldatapack}/mysqldata${PORT}
    76. fi
    77. mkdir -p ${mysqldatapack}/mysqldata${PORT}/{mydata,mydata,innodb_ts,innodb_log,relaylog,tmpdir,log,sock,binlog}
    78. chown -R mysql.mysql ${mysqldatapack}/mysqldata${PORT}
    79. # 初始化
    80. #${mysqlpackage}/mysql/bin/mysqld --defaults-file=/tmp/mysqlinstall.cnf --user=mysql --initialize-insecure
    81. ${mysqlpackage}/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize-insecure
    82. # 启动
    83. ${mysqlpackage}/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf &
    84. #cat /tmp/mysqlinstall.cnf > /etc/my.cnf
    85. #rm -rf /tmp/mysqlinstall.cnf