因使用源碼安裝的MySQL5.7.28多實例,在導入數據庫時會出現問題,所以重新研究使用mysql_multi的方法來管理多實例,經過測試環境驗證之后,在各方面使用上特別在備份還原上,沒有報MySQL5.7.28多實例的問題,踩了不少坑,這里我將我的部署過程分享下,如果在哪里出問題的,還請多多指正與指導,謝謝!!
參考文章:Centos7.5安裝mysql5.7.24二進制包方式部署
http://www.companysz.com/article/151867.htm
本從就直接從2.7章節開始安裝mysql多實例,具體部署過程如下:
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. MySQL安裝包下載
[root@~]# cd /opt[root@~]# wget -c https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz[root@~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz[root@~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql[root@~]# chown -R mysql:mysql /usr/local/mysql[root@~]# chown -R mysql:mysql /data
2.7.3. MySQL參數配置
配置my.cnf參數文件
(1)server_id=3306與server_id=3307數值請根據實際配置,注意配置的id值與局域網內其他各實例所配置的數值不可以沖突;
(2)max_connections=1000配置MySQL數據庫的最大連接數,根據實際需要配置,其他參數的優化根據實際需要修改或添
加;
(3)配置文件全部內容如下
[root@~]# vim /etc/my.cnf[mysqld_multi]mysqld = /usr/local/mysql/bin/mysqldmysqladmin = /usr/local/mysql/bin/mysqladminlog = /data/mysql/mysqld_multi.log #user=root#pass=[mysql]prompt="/u@jsshapp /R:/m:/s [/d]> "no-auto-rehash[mysqld3306]user = mysqlport = 3306symbolic-links = 0#basedir = /usr/datadir = /data/mysql/3306/datasocket = /data/mysql/3306/mysql3306.sockpid-file = /data/mysql/3306/mysqld3306.pidserver_id = 3306character_set_server = utf8max_connections = 1000skip_name_resolve = 1open_files_limit = 65536thread_cache_size = 64table_open_cache = 4096table_definition_cache = 1024table_open_cache_instances = 64max_prepared_stmt_count = 1048576explicit_defaults_for_timestamp = truelog_timestamps = systembinlog_format = rowlog_bin = /data/mysql/3306/binlog/mysql-binbinlog_rows_query_log_events = onexpire_logs_days = 7binlog_cache_size = 4Mmax_binlog_cache_size = 2Gmax_binlog_size = 1Gsync_binlog = 1log_bin_trust_function_creators = 1slow_query_log = onslow_query_log_file = /data/mysql/3306/data/slow.loglog-error = /data/mysql/3306/logs/error.loglog_queries_not_using_indexes = onlong_query_time = 1.000000gtid_mode = onenforce_gtid_consistency = ondefault_storage_engine = innodbdefault_tmp_storage_engine = innodbinnodb_data_file_path = ibdata1:12M:autoextend:max:2000Minnodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2000Minnodb_buffer_pool_filename = ib_buffer_poolinnodb_log_files_in_group = 3innodb_log_file_size = 512Minnodb_online_alter_log_max_size = 1024Minnodb_open_files = 4096innodb_page_size = 16kinnodb_thread_concurrency = 0innodb_read_io_threads = 4innodb_write_io_threads = 4innodb_purge_threads = 4innodb_page_cleaners = 4innodb_print_all_deadlocks = oninnodb_lock_wait_timeout = 20innodb_spin_wait_delay = 128innodb_autoinc_lock_mode = 2innodb_io_capacity = 200innodb_io_capacity_max = 2000#innodb_flush_neighbors = innodb_log_buffer_size = 8Minnodb_flush_log_at_timeout = 1innodb_flush_log_at_trx_commit = 2innodb_buffer_pool_size = 1024Minnodb_buffer_pool_instances = 4autocommit = 1innodb_buffer_pool_dump_pct = 25innodb_buffer_pool_dump_at_shutdown = ONinnodb_buffer_pool_load_at_startup = ON[mysqld3307]user = mysqlport = 3307symbolic-links = 0lower_case_table_names = 1#basedir = /usr/datadir = /data/mysql/3307/datasocket = /data/mysql/3307/mysql3307.sockpid-file = /data/mysql/3307/mysqld3307.pidserver_id = 3307character_set_server = utf8max_connections = 1000skip_name_resolve = 1open_files_limit = 65536thread_cache_size = 64table_open_cache = 4096table_definition_cache = 1024table_open_cache_instances = 64max_prepared_stmt_count = 1048576explicit_defaults_for_timestamp = truelog_timestamps = systembinlog_format = rowlog_bin = /data/mysql/3307/binlog/mysql-binbinlog_rows_query_log_events = onexpire_logs_days = 7binlog_cache_size = 4Mmax_binlog_cache_size = 2Gmax_binlog_size = 1Gsync_binlog = 1slow_query_log = onslow_query_log_file = /data/mysql/3307/data/slow.loglog-error = /data/mysql/3307/logs/error.loglog_queries_not_using_indexes = onlong_query_time = 1.000000gtid_mode = onenforce_gtid_consistency = ondefault_storage_engine = innodbdefault_tmp_storage_engine = innodbinnodb_data_file_path = ibdata1:12M:autoextend:max:2000Minnodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2000Minnodb_buffer_pool_filename = ib_buffer_poolinnodb_log_files_in_group = 3innodb_log_file_size = 512Minnodb_online_alter_log_max_size = 1024Minnodb_open_files = 4096innodb_page_size = 16kinnodb_thread_concurrency = 0innodb_read_io_threads = 4innodb_write_io_threads = 4innodb_purge_threads = 4innodb_page_cleaners = 4innodb_print_all_deadlocks = oninnodb_lock_wait_timeout = 20innodb_spin_wait_delay = 128innodb_autoinc_lock_mode = 2innodb_io_capacity = 200innodb_io_capacity_max = 2000#innodb_flush_neighbors = innodb_log_buffer_size = 8Minnodb_flush_log_at_timeout = 1innodb_flush_log_at_trx_commit = 2innodb_buffer_pool_size = 1024Minnodb_buffer_pool_instances = 4autocommit = 1innodb_buffer_pool_dump_pct = 25innodb_buffer_pool_dump_at_shutdown = ONinnodb_buffer_pool_load_at_startup = ON[mysqldump]quickmax_allowed_packet = 32M
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. testone實例初始化
操作實例初始化
[root@~]# mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --user=mysql --datadir=/data/mysql/3306/data/ > /tmp/3306.log 2>&1[root@~]# tail -100f /tmp/3306.log---使用tail命令查看初始化日志,有出現如下內容,即表示初始化完成(其中#5+t+xYW+<t?即為root用戶的臨時密碼)A temporary password is generated for root@localhost: #5+t+xYW+<t?
生成ssl文件
[root@~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data
啟動testone實例
[root@~]# mysqld_multi start 3306[root@~]# tail -100f /data/mysql/3306/logs/error.log ----使用tail命令查看啟動日志,有出現即表示啟動成功Version: '5.7.28-log' socket: '/data/mysql/3306/mysql3306.sock' port: 3306 MySQL Community Server (GPL)
修改root密碼
[root@~]# less /tmp/3306.log | grep 'A temporary password'[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sockEnter password:mysql> alter user 'root'@'localhost' identified by '統一密碼';mysql> flush privileges;mysql> exit;
驗證 testone root用戶統一密碼(界面正常輸出information_schema內容表示正常)
[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock -e "show databases;" | grep information_schemaEnter password:
修改my.cnf配置文件,將修改的統一密碼,添加到配置文件中
[root@~]# sed -i "s@^#user=root@user=root@g" /etc/my.cnf[root@~]# sed -i "s@^#pass=@pass=統一密碼@g" /etc/my.cnf[root@~]# cat /etc/my.cnf | grep pass= ---使用cat命令查看配置文件pass字段輸出的結果是否一致
停止testone實例
[root@~]# mysqld_multi stop 3306[root@~]# netstat -tnlp|grep 3306 ---輸入結果為空表示服務停止正常
2.7.6. testtwo實例初始化
操作實例初始化
[root@~]# mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql/ --user=mysql --datadir=/data/mysql/3307/data/ > /tmp/3307.log 2>&1[root@~]# tail -100f /tmp/3307.log---使用tail命令查看初始化日志,有出現如下內容,即表示初始化完成(其中-pn>t;Ye)Ay6=I即為root用戶的臨時密碼)A temporary password is generated for root@localhost: -pn>t;Ye)Ay6=I 生成ssl文件[root@~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3307/data
啟動testwo實例
[root@~]# mysqld_multi start 3307
----使用tail命令查看啟動日志,有出現即表示啟動成功
[root@~]# tail -100f /data/mysql/3307/logs/error.logVersion: '5.7.28-log' socket: '/data/mysql/3307/mysql3307.sock' port: 3307 MySQL Community Server (GPL)
修改root密碼
[root@~]# less /tmp/3307.log|grep 'A temporary password'[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sockEnter password:mysql> alter user 'root'@'localhost' identified by '統一密碼';mysql> flush privileges;mysql> exit;
驗證 testtwo root用戶統一密碼(界面正常輸出information_schema內容表示正常)
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock -e "show databases;" | grep information_schema
Enter password:
停止testtwo實例
[root@~]# mysqld_multi stop 3307[root@~]# netstat -tnlp|grep 3307 ---輸入結果為空表示服務停止正常
2.7.7. mysqld_multi多實例管理命令
啟動全部實例
[root@~]# mysqld_multi start
停止單個實例
[root@~]# mysqld_multi stop 3306[root@~]# mysqld_multi stop 3307
啟動單個實例
[root@~]# mysqld_multi start 3306[root@~]# mysqld_multi start 3307
查看全部實例的狀態(is running)
[root@~]# mysqld_multi reportReporting MySQL serversMySQL server from group: mysqld3306 is runningMySQL server from group: mysqld3307 is running
查看單個實例狀態
[root@~]# mysqld_multi report 3306Reporting MySQL serversMySQL server from group: mysqld3306 is running[root@~]# mysqld_multi report 3307Reporting MySQL serversMySQL server from group: mysqld3307 is running
停止全部實例
[root@~]# mysqld_multi stop
2.7.8. 數據導入
(1)將待導入的數據庫腳本(test.sql、testtwo.sql)文件(名稱根據實際情況操作)上傳至/data/路徑下
(2)使用命令確認兩實例已經處于運行狀態
[root@~]# mysqld_multi reportReporting MySQL serversMySQL server from group: mysqld3306 is runningMySQL server from group: mysqld3307 is running
(3)進入testone的mysql數據庫創建testone數據庫實例、用戶名及密碼并導入數據
[root@~]# cd /data/[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sockEnter password: mysql>create database testone default character set utf8 collate utf8_bin;mysql> grant select,insert,update,delete,create,alter,execute on testone.* to 'testone'@'%' identified by '密碼';mysql> flush privileges;mysql> exit[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock testone < /data/test.sql
(3)進入testtwo的mysql數據庫,創建testtwo服務數據庫實例、用戶名與密碼并導入數據
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sockEnter password:mysql> create database testtwo default character set utf8 collate utf8_bin;mysql> grant select,insert,update,delete,create,alter,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.9. 防火墻配置
根據實際要求,添加開放端口
[root@~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent[root@~]# firewall-cmd --zone=public --add-port=3307/tcp --permanent
重新載入
[root@~]# firewall-cmd --reload
總結
以上所述是小編給大家介紹的CentOS7.5使用mysql_multi方式安裝MySQL5.7.28多實例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
新聞熱點
疑難解答