一键部署 Mysql 数据库

  Shell脚本实现

  1. #!/bin/bash

  2. function loginfo() {

  3. if [[ $? -eq 0 ]];then

  4.     echo -e "\033[32m[INFO][$(date +"%F %T")] $1 succeed! \033[0m"

  5. else

  6.     echo -e "\033[31m[ERROR][$(date +"%F %T")] $1 failed! \033[0m"

  7. fi

  8. }

  9. function install_mysql() {

  10. echo -e "\033[32mBegin install mysql V5.7.28 ...\033[0m"

安装依赖
  1. sudo yum install libaio -y >/dev/null 2>&1

  2. loginfo "libaio install"

  3. BASE_DIR=$(pwd)

  4. DEPLOY_PATH="/opt"

  5. MYSQL_PKG_PATH=$DEPLOY_PATH/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz

  6. USER=$(whoami)

  7. GROUP=$(groups)

  8. MYSQL_URL="http://101.34.22.188/mysql-5.7.28/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz"

下载解压创建目录
  1. echo -e "\033[32mBegin download mysql V5.7.28 ...\033[0m"

  2. if [ ! -f ${DEPLOY_PATH}/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz ]

  3. then

  4.     sudo curl -o ${DEPLOY_PATH}/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz ${MYSQL_URL} >/dev/null 2>&1

  5.  loginfo "mysql software download"

  6. fi

  7. sudo tar xf ${MYSQL_PKG_PATH} -C ${DEPLOY_PATH}/ 

  8. loginfo "mysql software decompression"

  9. if [[ -d ${DEPLOY_PATH}/mysql ]];then

  10.     rm -rf ${DEPLOY_PATH}/mysql

  11. fi

  12. sudo ln -s ${DEPLOY_PATH}/mysql-5.7.28-linux-glibc2.12-x86_64 ${DEPLOY_PATH}/mysql 

  13. loginfo "create mysql dir soft link"

  14. if [[ -d /data/mysql ]];then

  15.     rm -rf /data/mysql

  16. fi

  17. sudo mkdir -p /data/mysql

  18. loginfo "create mysql data dir"

修改启动脚本
  1. sudo sed -i '46s#basedir=#basedir=/opt/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server

  2. sudo sed -i '47s#datadir=#datadir=/data/mysql#' ${DEPLOY_PATH}/mysql/support-files/mysql.server

  3. sudo cp ${DEPLOY_PATH}/mysql/support-files/mysql.server /etc/init.d/mysqld

  4. sudo chmod 755 /etc/init.d/mysqld

创建用户
  1. if ! grep -q '^mysql:' /etc/group

  2. then

  3.     sudo groupadd mysql

  4.     loginfo "create user mysql"

  5. fi

  6. if ! grep -q '^mysql:' /etc/passwd

  7. then

  8.     sudo useradd -r -g mysql -s /bin/false mysql

  9.     loginfo "create group mysql"

  10. fi

赋予data目录和base目录普通用户组
  1. sudo chown -R ${USER}.${GROUP} ${DEPLOY_PATH}/mysql/

  2. sudo chown -R ${USER}.${GROUP} /data/

  3. if [ ! -f /usr/bin/mysql ]

  4. then

  5.     sudo ln -s /opt/mysql/bin/mysql /usr/bin/

  6. fi

创建配置文件
  1. if [ -f /etc/my.cnf ]

  2. then

  3.     sudo rm -f /etc/my.cnf

  4. fi

  5. sudo bash -c "cat >> /etc/my.cnf" <<EOF

  6. [mysqld]

  7. datadir                             = /data/mysql

  8. basedir                             = /opt/mysql

  9. #tmpdir                              = /data/mysql/tmp_mysql

  10. port                                = 3306

  11. socket                              = /data/mysql/mysql.sock

  12. pid-file                            = /data/mysql/mysql.pid

  13. max_connections                     = 8000

  14. max_connect_errors                  = 100000

  15. max_user_connections                = 3000

  16. check_proxy_users                   = on

  17. mysql_native_password_proxy_users   = on

  18. local_infile                        = OFF

  19. symbolic-links                      = FALSE

  20. group_concat_max_len                = 4294967295

  21. max_join_size                       = 18446744073709551615

  22. max_execution_time                  = 20000

  23. lock_wait_timeout                   = 60

  24. autocommit                          = 1

  25. lower_case_table_names              = 1

  26. thread_cache_size                   = 64

  27. disabled_storage_engines            = "MyISAM,FEDERATED"

  28. character_set_server                = utf8mb4

  29. character-set-client-handshake      = FALSE

  30. collation_server                    = utf8mb4_general_ci

  31. init_connect                        = 'SET NAMES utf8mb4'

  32. transaction-isolation               = "READ-COMMITTED"

  33. skip_name_resolve                   = ON

  34. explicit_defaults_for_timestamp     = ON

  35. log_timestamps                      = SYSTEM

  36. local_infile                        = OFF

  37. event_scheduler                     = OFF

  38. query_cache_type                    = OFF

  39. query_cache_size                    = 0

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

  41. log_error                           = /data/mysql/mysql.err

  42. slow_query_log                      = ON

  43. slow_query_log_file                 = /data/mysql/slow.log

  44. long_query_time                     = 1

  45. general_log                         = OFF

  46. general_log_file                    = /data/mysql/general.log

  47. expire_logs_days                    = 99

  48. log-bin                             = /data/mysql/mysql-bin

  49. log-bin-index                       = /data/mysql/mysql-bin.index

  50. max_binlog_size                     = 500M

  51. binlog_format                       = mixed

  52. binlog_rows_query_log_events        = ON

  53. binlog_cache_size                   = 128k

  54. binlog_stmt_cache_size              = 128k

  55. log-bin-trust-function-creators     = 1

  56. max_binlog_cache_size               = 2G

  57. max_binlog_stmt_cache_size          = 2G

  58. relay_log                           = /data/mysql/relay

  59. relay_log_index                     = /data/mysql/relay.index

  60. max_relay_log_size                  = 500M

  61. relay_log_purge                     = ON

  62. relay_log_recovery                  = ON

  63. server_id                           = 1

  64. read_buffer_size                    = 1M

  65. read_rnd_buffer_size                = 2M

  66. sort_buffer_size                    = 64M

  67. join_buffer_size                    = 64M

  68. tmp_table_size                      = 64M

  69. max_allowed_packet                  = 128M

  70. max_heap_table_size                 = 64M

  71. connect_timeout                     = 43200

  72. wait_timeout                        = 43200

  73. back_log                            = 512

  74. interactive_timeout                 = 300

  75. net_read_timeout                    = 30

  76. net_write_timeout                   = 30

  77. skip_external_locking               = ON

  78. key_buffer_size                     = 16M

  79. bulk_insert_buffer_size             = 16M

  80. concurrent_insert                   = ALWAYS

  81. open_files_limit                    = 65000

  82. table_open_cache                    = 16000

  83. table_definition_cache              = 16000

  84. default_storage_engine              = InnoDB

  85. default_tmp_storage_engine          = InnoDB

  86. internal_tmp_disk_storage_engine    = InnoDB

  87. [client]

  88. socket                              = /data/mysql/mysql.sock

  89. default_character_set               = utf8mb4

  90. [mysql]

  91. default_character_set               = utf8mb4

  92. [ndatad default]

  93. TransactionDeadLockDetectionTimeOut = 20000

  94. EOF

  95. sudo chown -R ${USER}.${GROUP} /etc/my.cnf

  96. loginfo "configure my.cnf"

创建SSL证书
  1. sudo mkdir -p ${DEPLOY_PATH}/mysql/ca-pem/

  2. sudo ${DEPLOY_PATH}/mysql/bin/mysql_ssl_rsa_setup -d ${DEPLOY_PATH}/mysql/ca-pem/ --uid=mysql

  3. sudo chown -R ${USER}.${GROUP} ${DEPLOY_PATH}/mysql/ca-pem/

  4. sudo bash -c "cat >> /data/mysql/init_file.sql" <<EOF

  5. set global sql_safe_updates=0;

  6. set global sql_select_limit=50000;

  7. EOF

  8. sudo chown -R ${USER}.${GROUP} /data/mysql/init_file.sql

  9. sudo chown -R ${USER}.${GROUP} /etc/init.d/mysqld

初始化
  1. ${DEPLOY_PATH}/mysql/bin/mysqld --initialize --user=mysql --basedir=${DEPLOY_PATH}/mysql --datadir=/data/mysql 

  2. loginfo "initialize mysql"

过滤初始密码
mysql_passwd=$(grep 'A temporary password is generated' /data/mysql/mysql.err |awk '{print $NF}')
启动服务
  1. /etc/init.d/mysqld start

  2. loginfo "start mysqld"

修改初始密码
  1. ${DEPLOY_PATH}/mysql/bin/mysqladmin -uroot -p${mysql_passwd} password 'xkF*LyCR'

  2. if [ $? -ne 0 ];then

  3.     loginfo "initialize root password"

  4. fi

客户端环境变量
  1. echo "export PATH=\$PATH:${DEPLOY_PATH}/mysql/bin" | sudo tee /etc/profile.d/mysql.sh

  2. source /etc/profile.d/mysql.sh

  3. loginfo "configure envirement"

  4. }

  5. install_mysql

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 26
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值