因爲環境的須要,一個實例全部表要區分大小表,另外一個實例不區分。部署過來也參數了不少資料,也遇到些坑,這裏將個人部署記錄下來,以便你們參考,操做過程若有不當之處,還請指點,謝謝!!
具體部署過程記錄以下:node
[root@~]# echo " 192.168.8.100 multidb" >> /etc/hosts
mysql
1.1.2. 關閉selinuxlinux
[root@~]# sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config [root@~]# setenforce 0
1.1.3. 系統主機時間、時區、系統語言
修改時區c++
[root@~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
sql
修改系統語言環境數據庫
[root@~]# echo 'LANG="en_US.UTF-8"' >> /etc/profile [root@~]# source /etc/profile
配置主機NTP時間同步vim
[root@~]# yum -y install ntp [root@~]# systemctl enable ntpd [root@~]# systemctl start ntpd [root@~]# echo 'server ntp1.aliyun.com' >> /etc/ntp.conf [root@~]# echo 'server ntp2.aliyun.com' >> /etc/ntp.conf
[root@~]# rpm -e --nodeps mariadb-libs-* [root@~]# rpm -e mysql* [root@~]# yum list installed | grep mariadb ---確認已經清理乾淨 [root@~]# yum list installed | grep mysql ---確認已經清理乾淨 [root@~]# mv /etc/my.cnf /etc/my.cnf.`date +%Y%m%d%H%M%S`.bak
2.2 安裝依賴包app
[root@~]# yum -y install bzr zlib-devel gcc-c++ ncurses ncurses-devel libev make cmake gcc autoconf automake zlib libxml libgcrypt libtool bison perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL perl-Digest-MD5 rsync perl-Data-Dumper net-tools wget vim openssl openssl-devel
less
2.3 建立用戶ssh
[root@~]# groupadd mysql [root@~]# useradd mysql -g mysql -s /sbin/nologin -M
2.4 配置系統內核參數
[root@~]# vi /etc/sysctl.conf net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65535 net.ipv4.tcp_max_syn_backlog = 65535 net.ipv4.tcp_fin_timeout = 10 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_keepalive_time = 120 net.ipv4.tcp_keepalive_intvl = 30 net.ipv4.tcp_keepalive_probes = 3 vm.swappiness = 0 net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-iptables=1 net.ipv4.neigh.default.gc_thresh1=4096 net.ipv4.neigh.default.gc_thresh2=6144 net.ipv4.neigh.default.gc_thresh3=8192 kernel.shmmax = 25769803774 kernel.shmmni = 4096 kernel.shmall = 16777216 kernel.sem = 1010 129280 1010 128 net.ipv4.ip_local_port_range = 9000 65500 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 1048576 fs.aio-max-nr = 1048576 fs.file-max = 6815744 [root@~]# modprobe br_netfilter [root@~]# sysctl -p
2.5 修改系統資源限制
[root@~]# vi /etc/security/limits.conf mysql soft nproc 65535 mysql hard nproc 65535 mysql soft nofile 65535 mysql hard nofile 65535 mysql soft stack 10240
2.6 修改環境變量
[root@~]# vi /etc/profile if [ $USER = "mysql" ]; then if [ $SHELL = "/bin/ksh" ]; then ulimit -p 16384 ulimit -n 65536 else ulimit -u 16384 -n 65536 fi fi [root@~]# source /etc/profile
2.7 安裝mysql多實例
2.7.1. 建立軟件安裝目錄(部署路徑請根據實際修改)
[root@~]# mkdir -pv /data/mysql/{3306,3307} [root@~]# mkdir -v /data/mysql/3306/{logs,data,binlog} [root@~]# mkdir -v /data/mysql/3307/{logs,data,binlog}
2.7.2. boost源碼包下載
[root@opt~]# cd /opt [root@opt~]# wget -c http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz [root@opt~]# tar zxvf boost_1_59_0.tar.gz [root@opt~]# mv boost_1_59_0 /usr/local/boost
2.7.3. 下載並編譯安裝MySQL5.7.28
[root@opt~]# cd /opt```
[root@opt~]# wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.28.tar.gz
[root@opt~]# tar zxvf mysql-boost-5.7.28.tar.gz
[root@opt~]# cd mysql-5.7.28
[root@mysql-5.7.28~]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
DMYSQL_DATADIR=/usr/local/mysql/data \
DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock \
DDEFAULT_CHARSET=utf8 \
DDEFAULT_COLLATION=utf8_bin \
DEXTRA_CHARSETS=all \
DENABLED_LOCAL_INFILE=ON \
DWITH_INNOBASE_STORAGE_ENGINE=1 \
DWITH_FEDERATED_STORAGE_ENGINE=1 \
DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
DWITH_FAST_MUTEXES=1 \
DWITH_SSL=system \
DWITH_ZLIB=bundled \
DWITH_EDITLINE=bundled \
DWITH_BOOST=/usr/local/boost \
DENABLED_LOCAL_INFILE=1 \
DWITH_READLINE=1 \
DWITH_EMBEDDED_SERVER=1 \
DWITH_DEBUG=0
[root@mysql-5.7.28~]# make
[root@mysql-5.7.28~]# make install
2.7.4. 配置MySQL環境變量
[root@~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile
[root@~]# tail -1 /etc/profile
[root@~]# source /etc/profile
2.7.5. MySQL參數配置 (1)server_id=3306與server_id=3307數值請根據實際配置,注意配置的id值與局域網內其餘各實例所配置的數值不能夠衝突; (2)max_connections=1000配置MySQL數據庫的最大鏈接數,根據實際須要配置; (3)如下參數僅供參考,部署時根據實際須要添加配置,兩份配置文件所有內容以下 **3306配置文件內容:**
[root@~]# vim /data/mysql/3306/my3306.cnf
[client]
port = 3306
socket = /data/mysql/3306/mysql3306.sock
[mysql]
prompt="\u@jsshapp \R:\m:\s [\d]> "
no-auto-rehash
[mysqld]
user = mysql
port = 3306
symbolic-links = 0
basedir = /usr/local/mysql
datadir = /data/mysql/3306/data/
socket = /data/mysql/3306/mysql3306.sock
pid-file = /data/mysql/3306/mysqld3306.pid
server_id = 3306
character_set_server = utf8
max_connections = 1000
skip_name_resolve = 1
open_files_limit = 65536
thread_cache_size = 64
table_open_cache = 4096
table_definition_cache = 1024
table_open_cache_instances = 64
max_prepared_stmt_count = 1048576
explicit_defaults_for_timestamp = true
log_timestamps = system
binlog_format = row
log_bin = /data/mysql/3306/binlog/mysql-bin
binlog_rows_query_log_events = on
expire_logs_days = 7
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
sync_binlog = 1
slow_query_log = on
slow_query_log_file = /data/mysql/3306/data/slow.log
log-error = /data/mysql/3306/logs/error.log
#log_queries_not_using_indexes = on
long_query_time = 1.000000
gtid_mode = on
enforce_gtid_consistency = on
default_storage_engine = innodb
default_tmp_storage_engine = innodb
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_temp_data_file_path = ibtmp1:12M:autoextend
innodb_buffer_pool_filename = ib_buffer_pool
innodb_log_files_in_group = 3
innodb_log_file_size = 512M
innodb_online_alter_log_max_size = 1024M
innodb_open_files = 4096
innodb_page_size = 32k
innodb_thread_concurrency = 0
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_print_all_deadlocks = on
innodb_lock_wait_timeout = 20
innodb_spin_wait_delay = 128
innodb_autoinc_lock_mode = 2
innodb_io_capacity = 200
innodb_io_capacity_max = 2000
#innodb_flush_neighbors =
innodb_log_buffer_size = 8M
innodb_flush_log_at_timeout = 1
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = 1024M
innodb_buffer_pool_instances = 4
autocommit = 1
innodb_buffer_pool_dump_pct = 25
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_load_at_startup = ON
[mysqldump]
quick
max_allowed_packet = 32M
**3307配置(有添加lower_case_table_names)文件內容:**
[root@~]# vim /data/mysql/3307/my3307.cnf
[client]
port = 3307
socket = /data/mysql/3307/mysql3307.sock
[mysql]
prompt="\u@jsshapp \R:\m:\s [\d]> "
no-auto-rehash
[mysqld]
user = mysql
port = 3307
symbolic-links = 0
lower_case_table_names = 1
basedir = /usr/local/mysql
datadir = /data/mysql/3307/data/
socket = /data/mysql/3307/mysql3307.sock
pid-file = /data/mysql/3307/mysqld3307.pid
server_id = 3307
character_set_server = utf8
max_connections = 1000
skip_name_resolve = 1
open_files_limit = 65536
thread_cache_size = 64
table_open_cache = 4096
table_definition_cache = 1024
table_open_cache_instances = 64
max_prepared_stmt_count = 1048576
explicit_defaults_for_timestamp = true
log_timestamps = system
binlog_format = row
log_bin = /data/mysql/3307/binlog/mysql-bin
binlog_rows_query_log_events = on
expire_logs_days = 7
binlog_cache_size = 4M
max_binlog_cache_size = 2G
max_binlog_size = 1G
sync_binlog = 1
slow_query_log = on
slow_query_log_file = /data/mysql/3307/data/slow.log
log-error = /data/mysql/3307/logs/error.log
#log_queries_not_using_indexes = on
long_query_time = 1.000000
gtid_mode = on
enforce_gtid_consistency = on
default_storage_engine = innodb
default_tmp_storage_engine = innodb
innodb_data_file_path = ibdata1:1024M:autoextend
innodb_temp_data_file_path = ibtmp1:12M:autoextend
innodb_buffer_pool_filename = ib_buffer_pool
innodb_log_files_in_group = 3
innodb_log_file_size = 512M
innodb_online_alter_log_max_size = 1024M
innodb_open_files = 4096
innodb_page_size = 32k
innodb_thread_concurrency = 0
innodb_read_io_threads = 4
innodb_write_io_threads = 4
innodb_purge_threads = 4
innodb_page_cleaners = 4
innodb_print_all_deadlocks = on
innodb_lock_wait_timeout = 20
innodb_spin_wait_delay = 128
innodb_autoinc_lock_mode = 2
innodb_io_capacity = 200
innodb_io_capacity_max = 2000
#innodb_flush_neighbors =
innodb_log_buffer_size = 8M
innodb_flush_log_at_timeout = 1
innodb_flush_log_at_trx_commit = 2
innodb_buffer_pool_size = 1024M
innodb_buffer_pool_instances = 4
autocommit = 1
innodb_buffer_pool_dump_pct = 25
innodb_buffer_pool_dump_at_shutdown = ON
innodb_buffer_pool_load_at_startup = ON
[mysqldump]
quick
max_allowed_packet = 32M
[root@~]# chown -R mysql:mysql /data
[root@~]# chown -R mysql:mysql /usr/local/mysql
2.7.6. dbone實例初始化 操做實例初始化
[root@~]# mysqld --defaults-file=/data/mysql/3306/my3306.cnf --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/3306/data/
生成ssl文件
[root@~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data
啓動dbone實例
[root@~]# mysqld_safe --defaults-file=/data/mysql/3306/my3306.cnf --user=mysql &
修改root密碼
[root@~]# less /data/mysql/3306/logs/error.log|grep 'A temporary password'
[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock
Enter password:
mysql> alter user 'root'@'localhost' identified by '密碼';
mysql> flush privileges;
mysql> exit;
經過tcp/ip協議登錄mysql驗證
[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock
中止dbone實例
[root@~]# mysqladmin -uroot -p -S /data/mysql/3306/mysql3306.sock shutdown
Enter password:
2.7.7. dbtwo實例初始化 操做實例初始化
[root@~]# mysqld --defaults-file=/data/mysql/3307/my3307.cnf --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/3307/data/
生成ssl文件
[root@~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307/data
啓動dbtwo實例
[root@~]# mysqld_safe --defaults-file=/data/mysql/3307/my3307.cnf --user=mysql &
修改root密碼
[root@~]# less /data/mysql/3307/logs/error.log|grep 'A temporary password'
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock
Enter password:
mysql> alter user 'root'@'localhost' identified by '密碼';
mysql> flush privileges;
mysql> exit;
經過tcp/ip協議登錄mysql驗證
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock
中止dbtwo實例
[root@~]# mysqladmin -uroot -p -S /data/mysql/3307/mysql3307.sock shutdown
Enter password:
2.7.8. 配置多實例系統啓動腳本 配置實例3306系統服務腳本
[root@~]# vim /etc/init.d/dbone
#!/bin/sh
#chkconfig: 2345 80 90
#Simple dbone mysql init.d script conceived to work on Linux systems
SOCK="/data/mysql/3306/mysql3306.sock"
CNF="/data/mysql/3306/my3306.cnf"
MYSQL_USER="mysql"
MYSQL_PWD="密碼"
CmdPath="/usr/local/mysql/bin"
#startup function
function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=${CNF} --user=${MYSQL_USER} 2>&1 > /dev/null &
}
#stop function
function_stop_mysql()
{
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${MYSQL_USER} -p${MYSQL_PWD} -S ${SOCK} shutdown
}
#restart function
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: dbone {start|stop|restart}\n"
esac
配置實例3307系統服務腳本
[root@~]# vim /etc/init.d/dbtwo
#!/bin/sh
#chkconfig: 2345 81 92
#Simple dbtwo mysql init.d script conceived to work on Linux systems
SOCK="/data/mysql/3307/mysql3307.sock"
CNF="/data/mysql/3307/my3307.cnf"
MYSQL_USER="mysql"
MYSQL_PWD="密碼"
CmdPath="/usr/local/mysql/bin"
#startup function
function_start_mysql()
{
printf "Starting MySQL...\n"
/bin/sh ${CmdPath}/mysqld_safe --defaults-file=${CNF} --user=${MYSQL_USER} 2>&1 > /dev/null &
}
#stop function
function_stop_mysql()
{
printf "Stoping MySQL...\n"
${CmdPath}/mysqladmin -u ${MYSQL_USER} -p${MYSQL_PWD} -S ${SOCK} shutdown
}
#restart function
function_restart_mysql()
{
printf "Restarting MySQL...\n"
function_stop_mysql
sleep 2
function_start_mysql
}
case $1 in
start)
function_start_mysql
;;
stop)
function_stop_mysql
;;
restart)
function_restart_mysql
;;
*)
printf "Usage: dbtwo {start|stop|restart}\n"
esac
配置受權添加系統服務
[root@~]# chmod +x /etc/init.d/dbone
[root@~]# chmod +x /etc/init.d/dbtwo
[root@~]# chkconfig --add dbone
[root@~]# chkconfig –add dbtwo
[root@~]# chkconfig --list dbone
[root@~]# chkconfig --list dbtwo
啓動兩個db服務
[root@~]# service dbone start
[root@~]# service dbtwo start
中止兩個db服務
[root@~]# service dbone stop
[root@~]# service dbtwo stop
查看兩個db服務進程
[root@~]# netstat -tnlp|grep 3306
[root@~]# netstat -tnlp|grep 3307
2.7.9. 數據導入 第一個實例建立庫與用戶密碼:
[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock
Enter password:
mysql> create database testone default character set utf8 collate utf8_bin;
mysql> grant select,insert,update,delete,create,execute on testone.* to 'testone'@'%' identified by '密碼';
mysql> set global log_bin_trust_function_creators=TRUE;
mysql> flush privileges;
mysql> exit
[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock testone < /data/test.sql
第二個實例建立庫與用戶密碼:
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock
Enter password:
mysql> create database testtwo default character set utf8 collate utf8_bin;
mysql> grant select,insert,update,delete,create,execute on testtwo.* to 'testtwo'@'%' identified by '密碼';
mysql> flush privileges;
mysql> exit
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock testtwo < /data/testtwo.sql
2.7.10. 防火牆配置 根據實際要求,添加開放端口
[root@~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
[root@~]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
從新載入
[root@~]# firewall-cmd --reload