MySQL的二进制部署

目标

  1. 二进制部署MySQL
  2. 重新部署

二进制部署MySQL

  1. upload tar

    [root@ruozedata001 ~]# cd /usr/local/
    [root@ruozedata001 local]# mv ~/mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz ./
    [root@ruozedata001 local]# ls
    bin etc games include lib lib64 libexec mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz sbin share src
  2. check isnot install

    [root@ruozedata001 local]# ps -ef |grep mysqld
    root 13051 12800 0 00:02 pts/2 00:00:00 grep --color=auto mysqld
    [root@ruozedata001 local]# rpm -qa |grep -i mysql
  3. tar and ln

    [root@ruozedata001 local]# tar -zxvf mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
    [root@ruozedata001 local]# ln -s mysql-5.6.23-linux-glibc2.5-x86_64 mysql
    [root@ruozedata001 local]# ll
    total 304468
    drwxr-xr-x. 2 root root 6 Apr 11 2018 bin
    drwxr-xr-x. 2 root root 6 Apr 11 2018 etc
    drwxr-xr-x. 2 root root 6 Apr 11 2018 games
    drwxr-xr-x. 2 root root 6 Apr 11 2018 include
    drwxr-xr-x. 2 root root 6 Apr 11 2018 lib
    drwxr-xr-x. 2 root root 6 Apr 11 2018 lib64
    drwxr-xr-x. 2 root root 6 Apr 11 2018 libexec
    lrwxrwxrwx. 1 root root 34 Dec 19 00:05 mysql -> mysql-5.6.23-linux-glibc2.5-x86_64
    drwxr-xr-x. 13 root root 213 Dec 19 00:04 mysql-5.6.23-linux-glibc2.5-x86_64
    -rw-r--r--. 1 root root 311771412 Dec 15 19:29 mysql-5.6.23-linux-glibc2.5-x86_64.tar.gz
    drwxr-xr-x. 2 root root 6 Apr 11 2018 sbin
    drwxr-xr-x. 5 root root 49 Dec 10 22:43 share
    drwxr-xr-x. 2 root root 6 Apr 11 2018 src
  4. create group and user

    [root@ruozedata001 local]# groupadd -g 101 dba
    [root@ruozedata001 local]# useradd -u 514 -g dba -G root -d /usr/local/mysql mysqladmin
    useradd: warning: the home directory already exists.
    Not copying any file from skel directory into it.

    # 出现下列情况代表样式丢失,因为/usr/local/mysql目录已经存在,没有由linux创建,不会拷贝skel文件(.bash_profile/.bash_logout/.bashrc)
    [root@ruozedata001 ~]# su - mysqladmin
    -bash-4.2$

    [root@ruozedata001 local]# id mysqladmin
    uid=514(mysqladmin) gid=101(dba) groups=101(dba),0(root)

    [root@ruozedata001 local]# cp /etc/skel/.* /usr/local/mysql
    cp: omitting directory ‘/etc/skel/.’
    cp: omitting directory ‘/etc/skel/..’
    cp: omitting directory ‘/etc/skel/.mozilla’

    [root@ruozedata001 local]# su - mysqladmin
    Last login: Thu Dec 19 00:09:38 CST 2019 on pts/3
    [mysqladmin@ruozedata001 ~]$
  5. create /etc/my.cnf

    # 备份
    [root@ruozedata001 local]# cp /etc/my.cnf /etc/my.cnf2019
    [root@ruozedata001 local]# vi /etc/my.cnf

    执行 gg dG 清空 my.cnf


    [client]
    port = 3306
    socket = /usr/local/mysql/data/mysql.sock

    [mysqld]
    port = 3306
    socket = /usr/local/mysql/data/mysql.sock

    skip-external-locking
    key_buffer_size = 256M
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 4M
    query_cache_size= 32M
    max_allowed_packet = 16M
    myisam_sort_buffer_size=128M
    tmp_table_size=32M

    table_open_cache = 512
    thread_cache_size = 8
    wait_timeout = 86400
    interactive_timeout = 86400
    max_connections = 600

    # Try number of CPU's*2 for thread_concurrency
    thread_concurrency = 32

    #isolation level and default engine
    default-storage-engine = INNODB
    transaction-isolation = READ-COMMITTED

    server-id = 1
    basedir = /usr/local/mysql
    datadir = /usr/local/mysql/data
    pid-file = /usr/local/mysql/data/hostname.pid

    #open performance schema
    log-warnings
    sysdate-is-now

    binlog_format = MIXED
    log_bin_trust_function_creators=1
    log-error = /usr/local/mysql/data/hostname.err
    log-bin=/usr/local/mysql/arch/mysql-bin
    #other logs
    #general_log =1
    #general_log_file = /usr/local/mysql/data/general_log.err
    #slow_query_log=1
    #slow_query_log_file=/usr/local/mysql/data/slow_log.err

    #for replication slave
    #log-slave-updates
    #sync_binlog = 1

    #for innodb options
    innodb_data_home_dir = /usr/local/mysql/data/
    innodb_data_file_path = ibdata1:500M:autoextend
    innodb_log_group_home_dir = /usr/local/mysql/arch
    innodb_log_files_in_group = 2
    innodb_log_file_size = 200M

    # tun product 生产调优参数
    innodb_buffer_pool_size = 1024M
    innodb_additional_mem_pool_size = 50M
    innodb_log_buffer_size = 16M

    innodb_lock_wait_timeout = 100
    #innodb_thread_concurrency = 0
    innodb_flush_log_at_trx_commit = 1
    innodb_locks_unsafe_for_binlog=1

    #innodb io features: add for mysql5.5.8
    performance_schema
    innodb_read_io_threads=4
    innodb-write-io-threads=4
    innodb-io-capacity=200
    #purge threads change default(0) to 1 for purge
    innodb_purge_threads=1
    innodb_use_native_aio=on

    #case-sensitive file names and separate tablespace
    innodb_file_per_table = 1
    lower_case_table_names=1

    [mysqldump]
    quick
    max_allowed_packet = 16M

    [mysql]
    no-auto-rehash

    [mysqlhotcopy]
    interactive-timeout

    [myisamchk]
    key_buffer_size = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
  6. chown and chmod privileges and try first install

    [root@ruozedata001 local]# ll /etc/my.cnf
    -rw-r--r--. 1 root root 2232 Dec 19 00:21 /etc/my.cnf

    [root@ruozedata001 local]# chown mysqladmin:dba /etc/my.cnf
    [root@ruozedata001 local]# ll /etc/my.cnf
    -rw-r--r--. 1 mysqladmin dba 2232 Dec 19 00:21 /etc/my.cnf

    [root@ruozedata001 local]# chmod 640 /etc/my.cnf
    [root@ruozedata001 local]# ll /etc/my.cnf
    -rw-r-----. 1 mysqladmin dba 2232 Dec 19 00:21 /etc/my.cnf

    # 软连接修正
    [root@ruozedata001 local]# chown -R mysqladmin:dba /usr/local/mysql
    [root@ruozedata001 local]# chown -R mysqladmin:dba /usr/local/mysql/*
    # MySQL目录修正
    [root@ruozedata001 local]# chown -R mysqladmin:dba /usr/local/mysql-5.6.23-linux-glibc2.5-x86_64

    [root@ruozedata001 local]# chmod -R 755 /usr/local/mysql
    [root@ruozedata001 local]# chmod -R 755 /usr/local/mysql/*
    [root@ruozedata001 local]# chmod -R 755 /usr/local/mysql-5.6.23-linux-glibc2.5-x86_64
  7. install

    su - mysqladmin
    Last login: Thu Dec 19 00:16:10 CST 2019 on pts/2
    [mysqladmin@ruozedata001 ~]$ pwd
    /usr/local/mysql
    [mysqladmin@ruozedata001 ~]$ mkdir arch

    [mysqladmin@ruozedata001 ~]$ scripts/mysql_install_db --user=mysqladmin --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    # 安装perl autoconf libaio
    yum install -y perl
    yum install -y autoconf
    yum install -y libaio
  8. configure mysql service and boot auto start

    [root@ruozedata001 ~]# cd /usr/local/mysql
    [root@ruozedata001 mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysql
    [root@ruozedata001 mysql]# chmod +x /etc/rc.d/init.d/mysql
    # 如果部署过可以删除
    [root@ruozedata001 mysql]# chkconfig --del mysql
    # 添加服务
    [root@ruozedata001 mysql]# chkconfig --add mysql
    # 配置开机自启动,可能失效,两手准备
    [root@ruozedata001 mysql]# chkconfig --level 345 mysql on
    [root@ruozedata001 mysql]# vi /etc/rc.local

    su - mysqladmin -c "/etc/init.d/mysql start --federated"
  9. start mysql and to view process and listening

    [root@ruozedata001 mysql]# su -  mysqladmin
    Last login: Thu Dec 19 00:37:03 CST 2019 on pts/2
    [mysqladmin@ruozedata001 ~]$

    [mysqladmin@ruozedata001 ~]$ rm -rf my.cnf

    [mysqladmin@ruozedata001 ~]$ bin/mysqld_safe &
    # 或者
    [mysqladmin@ruozedata001 ~]$ service mysql start
    Starting MySQL.. SUCCESS!
  10. login mysql

    [mysqladmin@ruozedata001 ~]$ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.6.23-log MySQL Community Server (GPL)

    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql> show databases;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | test |
    +--------------------+
    4 rows in set (0.00 sec)
  11. update password and purge user

    mysql> use mysql;
    mysql> update user set password=password('ruozedata') where user='root';
    mysql> delete from user where user='';
    mysql>flush privileges;
  12. configure .bashrc

    [mysqladmin@ruozedata001 ~]$ vi .bashrc 

    export MYSQL_HOME=/usr/local/mysql
    export PATH=$MYSQL_HOME/bin:$PATH

    PS1=`uname -n`":"'$USER'":"'$PWD'":>"; export PS1

    [mysqladmin@ruozedata001 ~]$ source .bashrc

    [root@ruozedata001 mysql]# su - mysqladmin
    Last login: Thu Dec 19 01:01:38 CST 2019 on pts/1
    ruozedata001:mysqladmin:/usr/local/mysql:>

重新部署

Author: Red
Link: http://yoursite.com/2018/10/03/archives/mysql/mysql-1/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.