5.7 源码编译安装脚本

  1. #!/bin/bash
  2. #
  3. #********************************************************************
  4. #Author: Wuvikr
  5. #QQ: 744123155
  6. #Date: 2020-12-01
  7. #FileName Mysql5.7_src_install.sh
  8. #URL: http://www.wuvikr.top
  9. #Description The test script
  10. #Copyright (C): 2020 All rights reserved
  11. #********************************************************************
  12. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  13. export PATH
  14. CPU=`lscpu | sed -rn 's/^CPU\(s\)[^0-9]+([0-9]+)/\1/p'`
  15. Rpcsvc_Package=rpcsvc-proto-1.4.2.tar.xz
  16. Boost_Package=boost_1_59_0.tar.bz2
  17. Mysql_Package=mysql-5.7.30.tar.gz
  18. Rpcsvc_Dirname=${Rpcsvc_Package%.tar*}
  19. Boost_Dirname=${Boost_Package%.tar*}
  20. Mysql_Dirname=${Mysql_Package%.tar*}
  21. Boost_Install_Dir=/usr/local
  22. Mysql_Install_Dir=/apps/mysql
  23. Mysql_Data_Dir=/data/mysql
  24. echo_colors() {
  25. echo -e "\e[1;$1m$2\e[0m"
  26. }
  27. # 编译安装rpcsvc
  28. install_rpcsvc() {
  29. [ -f $Rpcsvc_Package ] && tar xvf $Rpcsvc_Package &> /dev/null || echo_colors 31 "当前目录没有检测到${Rpcsvc_Package}包,请提前准备好安装包!"
  30. cd $Rpcsvc_Dirname
  31. ./configure
  32. make -j $CPU && make install
  33. }
  34. # 编译安装mysql
  35. install_mysql() {
  36. # 切换回上一级目录
  37. cd ..
  38. # 检测安装包
  39. [ -f $Boost_Package ] && tar xvf $Boost_Package -C $Boost_Install_Dir &> /dev/null || echo_colors 31 "当前目录没有检测到${Boost_Package}包,请提前准备好安装包!"
  40. [ -f $Mysql_Package ] && tar xvf $Mysql_Package &> /dev/null || echo_colors 31 "当前目录没有检测到${Mysql_Package}包,请提前准备好安装包!"
  41. # 安装相关依赖包
  42. yum -y install make cmake gcc gcc-c++ ncurses ncurses-devel bison openssl-devel
  43. # 创建用户及用户组
  44. groupadd -r mysql
  45. useradd -r -g mysql -s /sbin/nologin mysql
  46. #准备mysql目录
  47. mkdir $Mysql_Data_Dir
  48. chown mysql.mysql $Mysql_Data_Dir
  49. # 编译安装
  50. cd $Mysql_Dirname
  51. cmake . \
  52. -DCMAKE_INSTALL_PREFIX=$Mysql_Install_Dir \
  53. -DMYSQL_DATADIR=$Mysql_Data_Dir \
  54. -DSYSCONFDIR=/etc \
  55. -DMYSQL_UNIX_ADDR=$Mysql_Data_Dir/mysqld.sock \
  56. -DEXTRA_CHARSETS=all \
  57. -DDEFAULT_CHARSET=utf8mb4 \
  58. -DDEFAULT_COLLATION=utf8mb4_unicode_ci \
  59. -DWITH_MYISAM_STORAGE_ENGINE=1 \
  60. -DWITH_INNOBASE_STORAGE_ENGINE=1 \
  61. -DWITH_PARTITION_STORAGE_ENGINE=1 \
  62. -DENABLED_LOCAL_INFILE=1 \
  63. -DENABLED_PROFILING=1 \
  64. -DMYSQL_TCP_PORT=3306 \
  65. -DWITH_DEBUG=0 \
  66. -DWITH_BOOST=${Boost_Install_Dir}/${Boost_Dirname}
  67. make -j $CPU && make install
  68. }
  69. # 配置和初始化Mysql
  70. configuration() {
  71. # 设置环境变量
  72. echo "PATH=${Mysql_Install_Dir}/bin:$PATH" > /etc/profile.d/mysql.sh
  73. # 准备配置文件
  74. cat > /etc/my.cnf << EOF
  75. [mysqld]
  76. datadir=$Mysql_Data_Dir
  77. skip_name_resolve=1
  78. socket=${Mysql_Data_Dir}/mysql.sock
  79. log-error=${Mysql_Data_Dir}/mysql.log
  80. pid-file=${Mysql_Data_Dir}/mysql.pid
  81. [client]
  82. default-character-set=utf8mb4
  83. socket=${Mysql_Data_Dir}/mysql.sock
  84. [mysql]
  85. default-character-set=utf8mb4
  86. socket=${Mysql_Data_Dir}/mysql.sock
  87. [mysql]
  88. auto-rehash
  89. prompt="\\u@\\h [\\d]>"
  90. EOF
  91. # 初始化数据库
  92. ${Mysql_Install_Dir}/bin/mysqld --initialize-insecure --user=mysql --basedir=${Mysql_Install_Dir} --datadir=${Mysql_Data_Dir}
  93. # 准备服务脚本
  94. cp ${Mysql_Install_Dir}/support-files/mysql.server /etc/init.d/mysqld
  95. # 启动mysql
  96. chkconfig --add mysqld
  97. service mysqld start
  98. }
  99. install_rpcsvc
  100. install_mysql
  101. configuration
  102. echo_colors 32 "${Mysql_Dirname}安装成功!"

mysqldump 备份脚本

  1. #!/bin/bash
  2. #
  3. #********************************************************************
  4. #Author: Wuvikr
  5. #QQ: 744123155
  6. #Date: 2021-01-22
  7. #FileName Mysql_Backup.sh
  8. #URL: http://www.wuvikr.top
  9. #Description The test script
  10. #Copyright (C): 2021 All rights reserved
  11. #********************************************************************
  12. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  13. export PATH
  14. USER=root
  15. PASS=744123
  16. ALL_BACKUP_DIR=/data/backup/all
  17. SINGLE_BACKUP_DIR=/data/backup/single
  18. INCREMENT_BACKUP_DIR=/data/backup/increment
  19. DATE=$(date +%F)
  20. DATABASE_NAME=buyee
  21. BINLOG_DIR=/data/mysql/binlog
  22. # 完全备份
  23. all(){
  24. if [ ! -d $ALL_BACKUP_DIR/$DATE ];then
  25. mkdir -p $ALL_BACKUP_DIR/$DATE
  26. fi
  27. mysqldump -u$USER -p$PASS -A -F --single-transaction --master-data | gzip > $ALL_BACKUP_DIR/$DATE/all.sql.gz
  28. }
  29. # 单个数据库备份
  30. single(){
  31. if [ ! -d $SINGLE_BACKUP_DIR/$DATE ];then
  32. mkdir -p $SINGLE_BACKUP_DIR/$DATE
  33. fi
  34. mysqldump -u$USER -p$PASS -B $DATABASE_NAME -F --single-transaction --master-data | gzip > $SINGLE_BACKUP_DIR/$DATE/$DATABASE_NAME.sql.gz
  35. }
  36. # 增量备份
  37. increment(){
  38. if [ ! -d $INCREMENT_BACKUP_DIR/$DATE ];then
  39. mkdir -p $INCREMENT_BACKUP_DIR/$DATE
  40. fi
  41. mysqladmin -u$USER -p$PASS flush-logs
  42. cp `ls $BINLOG_DIR/mysql-bin.[0-9]* | head -n -1 | sort -rg | head -n 1` $INCREMENT_BACKUP_DIR/$DATE/
  43. }
  44. case $1 in
  45. all)
  46. all
  47. ;;
  48. single)
  49. single
  50. ;;
  51. increment)
  52. increment
  53. ;;
  54. *)
  55. echo 'Usage: Mysql_Backup.sh all|single|increment'
  56. esac

xtrabackup 备份脚本

  1. #!/bin/bash
  2. BTIME=`date +%F-%H_%M_%S`
  3. Filename=`ls -tr /yingpan/dalanya/backup/ | head -1`
  4. Number=`ls /yingpan/dalanya/backup/ | wc -l`
  5. if (($Number>=5))
  6. then
  7. /usr/bin/rm -f /yingpan/dalanya/backup/$Filename
  8. fi
  9. /usr/local/xtrabackup/bin/innobackupex --user=root --password='Qh$#!_201906' --parallel=4 --compress-threads=4 --no-timestamp --stream=tar ./ 2>/yingpan/dalanya/backup/log/${BTIME}_error.log | gzip - > /yingpan/dalanya/backup/dalanya_quan_$BTIME.tar.gz
  10. tail -1 /yingpan/dalanya/backup/log/${BTIME}_error.log | grep "completed OK"
  11. if [ `echo $?` -eq 0 ]; then
  12. echo "xtrabackup Executed Successfully !!! ---- ${BTIME}" >> /yingpan/dalanya/backup/log/xtrabackup.log
  13. else
  14. echo "xtrabackup failed !!! --- ${BTIME}" >> /yingpan/dalanya/backup/log/xtrabackup.log
  15. fi

MySQL 启动脚本

  1. #!/bin/bash
  2. #
  3. #********************************************************************
  4. #Author: Wuvikr
  5. #QQ: 744123155
  6. #Date: 2021-06-03
  7. #FileName mysqld.sh
  8. #URL: http://www.wuvikr.top
  9. #Description The test script
  10. #Copyright (C): 2021 All rights reserved
  11. #********************************************************************
  12. USER='root'
  13. PASSWD='744123'
  14. CMD_PATH='/opt/mysql/bin/'
  15. CONF='/etc/my.cnf'
  16. SOCKET='/data/mysql/mysql.sock'
  17. # 颜色输出
  18. function echo_colors() {
  19. echo -e "\e[1;$1m$2\e[0m"
  20. }
  21. function start_mysqld() {
  22. if [ ! -e "$SOCKET" ];then
  23. echo_colors 32 "Starting MySQL... \n"
  24. ${CMD_PATH}mysqld_safe --defaults-file=${CONF} &>/dev/null &
  25. else
  26. echo_colors 33 "MySQL is running... \n"
  27. exit
  28. fi
  29. }
  30. function stop_mysqld(){
  31. if [ ! -e "$SOCKET" ];then
  32. echo_colors 33 "MySQL is stopped... \n"
  33. exit
  34. else
  35. echo_colors 32 "Stoping MySQL... \n"
  36. ${CMD_PATH}mysqladmin -u${USER} -p${PASSWD} -S ${SOCKET} shutdown &>/dev/null
  37. fi
  38. }
  39. function restart_mysqld(){
  40. echo_colors 33 "Restarting MySQL... \n"
  41. stop_mysqld
  42. sleep 2
  43. start_mysqld
  44. }
  45. case $1 in
  46. start)
  47. start_mysqld
  48. ;;
  49. stop)
  50. stop_mysqld
  51. ;;
  52. restart)
  53. restart_mysqld
  54. ;;
  55. *)
  56. echo_colors 31 "Usage: $0 start|stop|restart \n"
  57. ;;
  58. esac