设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql-5.7.21二进制安装Jemalloc内存优化备份恢复修改密码

发布时间:2022-07-05 11:36 所属栏目:115 来源:互联网
导读:简介 ######数据库目录/usr/local/mysql############ ######数据目录/data/mysql############ ######慢日志目录/data/slowlog############ ######端口号默认3306其余参数按需自行修改############ 安装脚本 #!/bin/bash cd /usr/local/src/ if [ ! -f mysql-
  简介
 
  ######数据库目录/usr/local/mysql############
 
  ######数据目录/data/mysql############
 
  ######慢日志目录/data/slowlog############
 
  ######端口号默认3306其余参数按需自行修改############
 
  安装脚本
 
  #!/bin/bash
 
  cd /usr/local/src/
 
  if [ ! -f  mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz  ]; then
 
  wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
 
  fi
 
  yum install -y autoconf automake imake libxml2-devel expat-devel cmake gcc gcc-c++ libaio libaio-devel bzr bison libtool ncurses-devel  gcc gcc-c++  
 
  # Check if user is root
 
  if [ $(id -u) != "0" ]; then
 
      echo "Error: You must be root to run this script, please use root to install"
 
      exit 1
 
  fi
 
  clear
 
  cd     /usr/local/src
 
  if [ ! -f  jemalloc-5.0.1.tar.bz2  ]; then
 
  yum install  bzip2 -y
 
  wget       https://github.com/jemalloc/jemalloc/releases/download/5.0.1/jemalloc-5.0.1.tar.bz2
 
  tar     -xjvf     jemalloc-5.0.1.tar.bz2
 
  cd jemalloc-5.0.1/
 
  ./configure  -prefix=/usr/local/jemalloc    --libdir=/usr/local/lib
 
  make  && make install
 
  echo  /usr/local/lib >> /etc/ld.so.conf
 
  ldconfig
 
  fi
 
  cp /usr/local/lib/libjemalloc.so            /usr/lib
 
  echo "========================================================================="
 
  echo "A tool to auto-compile & install MySQL 5.7.21 on Redhat/CentOS Linux "
 
  echo "========================================================================="
 
  cur_dir=$(pwd)
 
  #set mysql root password
 
      echo "==========================="
 
      mysqlrootpwd="123456"
 
      echo -e "Please input the root password of mysql:"
 
      read -p "(Default password: 123456):" mysqlrootpwd
 
      if [ "$mysqlrootpwd" = "" ]; then
 
          mysqlrootpwd="123456"
 
      fi
 
      echo "==========================="
 
      echo "MySQL root password:$mysqlrootpwd"
 
      echo "==========================="
 
  #which MySQL Version do you want to install?
 
  echo "==========================="
 
      isinstallmysql57="n"
 
      echo "Install MySQL 5.7.21,Please input y"
 
      read -p "(Please input y , n):" isinstallmysql57
 
      case "$isinstallmysql57" in
 
      y|Y|Yes|YES|yes|yES|yEs|YeS|yeS)
 
      echo "You will install MySQL 5.7.21"
 
      isinstallmysql57="y"
 
      ;;
 
      *)
 
      echo "INPUT error,You will exit install MySQL 5.7.21"
 
      isinstallmysql57="n"
 
      exit
 
      esac
 
      get_char()
 
      {
 
      SAVEDSTTY=`stty -g`
 
      stty -echo
 
      stty cbreak
 
      #dd if=/dev/tty bs=1 count=1 2> /dev/null
 
      stty -raw
 
      stty echo
 
      stty $SAVEDSTTY
 
      }
 
      echo ""
 
      echo "Press any key to start...or Press Ctrl+c to cancel"
 
      char=`get_char`
 
  # Initialize  the installation related content.
 
  function InitInstall()
 
  {
 
      cat /etc/issue
 
      uname -a
 
      MemTotal=`free -m | grep Mem | awk '{print  $2}'`  
 
      echo -e "\n Memory is: ${MemTotal} MB "
 
      #Set timezone
 
      #rm -rf /etc/localtime
 
      #ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
      #Delete Old Mysql program
 
      rpm -qa|grep mysql
 
      rpm -e mysql
 
      #Disable SeLinux
 
      if [ -s /etc/selinux/config ]; then
 
      sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
 
      fi
 
      setenforce 0
 
  }
 
  #Installation of depend on and optimization options.
 
  function InstallDependsAndOpt()
 
  {
 
  cd $cur_dir
 
  cat >>/etc/security/limits.conf<<EOF
 
  * soft nproc 65535
 
  * hard nproc 65535
 
  * soft nofile 65535
 
  * hard nofile 65535
 
  EOF
 
  echo "fs.file-max=65535
 
  net.ipv4.tcp_fin_timeout = 30
 
  net.ipv4.tcp_tw_reuse = 1
 
  net.ipv4.tcp_tw_recycle = 1
 
  net.ipv4.tcp_max_tw_buckets = 4096
 
  net.ipv4.tcp_max_syn_backlog = 4096
 
  " >> /etc/sysctl.conf
 
  sysctl -p
 
  }
 
  #Install MySQL
 
  function InstallMySQL57()
 
  {
 
  echo "============================Install MySQL 5.7.21=================================="
 
  cd $cur_dir
 
  #Backup old my.cnf
 
  #rm -f /etc/my.cnf
 
  if [ -s /etc/my.cnf ]; then
 
      mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
 
  fi
 
  echo "============================MySQL 5.7.21 installing…………========================="
 
  #mysql directory configuration
 
  cd /usr/local/src
 
  tar  xvf   mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
 
  mv mysql-5.7.21-linux-glibc2.12-x86_64   /usr/local/mysql
 
  groupadd mysql -g 512
 
  useradd -u 512 -g mysql -s /sbin/nologin -d /home/mysql mysql
 
  mkdir -p /data/mysql
 
  mkdir -p /data/slowlog
 
  chown -R mysql:mysql /data/mysql
 
  chown -R mysql:mysql /usr/local/mysql
 
  chown -R mysql:mysql /data/slowlog
 
  #edit /etc/my.cnf
 
  SERVERID=`ifconfig eth0 | grep "inet" | awk '{ print $2}'| awk -F. '{ print $3$4}'`
 
  cat >>/etc/my.cnf<<EOF
 
  [client]
 
  port=3306
 
  socket=/tmp/mysql.sock
 
  default-character-set=utf8
 
  [mysql]
 
  no-auto-rehash
 
  default-character-set=utf8
 
  [mysqld]
 
  port=3306
 
  bind-address = 0.0.0.0
 
  character-set-server=utf8
 
  socket=/tmp/mysql.sock
 
  pid-file=/data/mysql/mysqld.pid
 
  basedir=/usr/local/mysql
 
  datadir=/data/mysql
 
  explicit_defaults_for_timestamp=true
 
  lower_case_table_names=1
 
  back_log=103
 
  max_connections=3000
 
  max_connect_errors=100000
 
  table_open_cache=512
 
  external-locking=FALSE
 
  max_allowed_packet=32M
 
  sort_buffer_size=16M
 
  join_buffer_size=2M
 
  thread_cache_size=51
 
  query_cache_size=32M
 
  #query_cache_limit=4M
 
  transaction_isolation=REPEATABLE-READ
 
  tmp_table_size=96M
 
  max_heap_table_size=96M
 
  ###***slowqueryparameters
 
  long_query_time=1
 
  slow_query_log = 1
 
  slow_query_log_file=/data/slowlog/slow.log
 
  ###***binlogparameters
 
  log-bin=mysql-bin
 
  binlog_cache_size=4M
 
  max_binlog_cache_size=4096M
 
  max_binlog_size=1024M
 
  binlog_format=MIXED
 
  expire_logs_days=7
 
  ###***relay-logparameters
 
  #relay-log=/data/3307/relay-bin
 
  #relay-log-info-file=/data/3307/relay-log.info
 
  #master-info-repository=table
 
  #relay-log-info-repository=table
 
  #relay-log-recovery=1
 
  #***MyISAMparameters
 
  key_buffer_size=16M
 
  read_buffer_size=1M
 
  read_rnd_buffer_size=16M
 
  bulk_insert_buffer_size=1M
 
  #skip-name-resolve
 
  ###***master-slavereplicationparameters
 
  server-id=$SERVERID
 
  #slave-skip-errors=all
 
  #***Innodbstorageengineparameters
 
  innodb_buffer_pool_size=2G            #  操作系统内存的70%-80%最佳。
 
  innodb_data_file_path=ibdata1:10M:autoextend
 
  #innodb_file_io_threads=8
 
  innodb_thread_concurrency=16
 
  innodb_flush_log_at_trx_commit=1
 
  innodb_log_buffer_size=16M
 
  innodb_log_file_size=512M
 
  innodb_log_files_in_group=2
 
  innodb_max_dirty_pages_pct=75
 
  innodb_buffer_pool_dump_pct=50
 
  innodb_lock_wait_timeout=50
 
  innodb_file_per_table=OFF
 
  [mysqldump]
 
  quick
 
  max_allowed_packet=32M
 
  [myisamchk]
 
  key_buffer=16M
 
  sort_buffer_size=16M
 
  read_buffer=8M
 
  write_buffer=8M
 
  [mysqld_safe]
 
  malloc-lib=/usr/lib/libjemalloc.so
 
  open-files-limit=8192
 
  log-error=/data/mysql/error.log
 
  pid-file=/data/mysql/mysqld.pid
 
  EOF
 
  /usr/local/mysql/bin/mysqld     --defaults-file=/etc/my.cnf     --user=mysql --datadir=/data/mysql   --basedir=/usr/local/mysql  --initialize-insecure
 
  cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
 
  chmod 700 /etc/init.d/mysqld
 
  chkconfig --add mysqld
 
  chkconfig --level 2345 mysqld on
 
  cat >> /etc/ld.so.conf.d/mysql-x86_64.conf<<EOF
 
  /usr/local/mysql/lib
 
  EOF
 
  ldconfig
 
  if [ -d "/proc/vz" ];then
 
  ulimit -s unlimited
 
  fi
 
  /etc/init.d/mysqld start
 
  cat >> /etc/profile <<EOF
 
  export PATH=$PATH:/usr/local/mysql/bin
 
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/mysql/lib
 
  EOF
 
  /usr/local/mysql/bin/mysqladmin -u root password $mysqlrootpwd
 
  cat > /tmp/mysql_sec_script<<EOF
 
  use mysql;
 
  #delete from mysql.user where user!='root' or host!='localhost';
 
  #grant all privileges on *.* to 'sys_admin'@'%' identified by 'MANAGER';
 
  flush privileges;
 
  EOF
 
  /usr/local/mysql/bin/mysql -u root -p$mysqlrootpwd -h localhost < /tmp/mysql_sec_script
 
  rm -f /tmp/mysql_sec_script
 
  #/etc/init.d/mysqld restart
 
  echo "============================MySQL 5.7.21 install completed========================="
 
  }
 
  function CheckInstall()
 
  {
 
  echo "===================================== Check install ==================================="
 
  clear
 
  ismysql=""
 
  echo "Checking..."
 
  if [ -s /usr/local/mysql/bin/mysql ] && [ -s /usr/local/mysql/bin/mysqld_safe ] && [ -s /etc/my.cnf ]; then
 
    echo "MySQL: OK"
 
    ismysql="ok"
 
    else
 
    echo "Error: /usr/local/mysql not found!!!MySQL install failed."
 
  fi
 
  if [ "$ismysql" = "ok" ]; then
 
  echo "Install MySQL 5.7.21 completed! enjoy it."
 
  echo "========================================================================="
 
  netstat -lntup
 
  else
 
  echo "Sorry,Failed to install MySQL!"
 
  echo "You can tail /root/mysql-install.log from your server."
 
  fi
 
  }
 
  #The installation log
 
  InitInstall 2>&1 | tee /root/mysql-install.log
 
  InstallDependsAndOpt 2>&1 | tee -a /root/mysql-install.log
 
  InstallMySQL57 > /dev/null
 
  CheckInstall 2>&1 | tee -a /root/mysql-install.log
 
  备份
 
  mysqldump  -uroot -p123456 -B  ultrax        --single-transaction  --master-data=2  > ultrax.sql
 
  -A  全备份
 
  -B  备份库(表结构和数据)
 
  --single-transaction    预防锁   数据一致性   确保本次会话(dump)时,不会看到其他会话已经提交了的数据。
 
  --master-data=2     注释记录复制信息
 
                         =1      记录change  master to 语句
  查看SQL
 
  egrep -v "#|\*|--|^$"    ultrax.sql
 
  恢复
 
  mysql  -uroot -p123456        < /root/ultrax.sql
 
  修改密码
 
  [mysqld]
 
  skip-grant-tables
 
  ./mysqladmin -uroot -p password
 
  update user set password=password('root') where user='root';
 
  update user set authentication_string=PASSWORD('123456')  where user='root'.
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读