因使用源碼安裝的MySQL5.7.28多實例,在導入數據庫時會出現問題,所以重新研究使用mysql_multi的方法來管理多實例,經過測試環境驗證之后,在各方面使用上特別在備份還原上,沒有報MySQL5.7.28多實例的問題,踩了不少坑,這里我將我的部署過程分享下,如果在哪里出問題的,還請多多指正與指導,謝謝!!
參考文章:Centos7.5安裝mysql5.7.24二進制包方式部署
本從就直接從2.7章節開始安裝mysql多實例,具體部署過程如下:
2.7 安裝mysql多實例
2.7.1. 創建軟件安裝目錄(部署路徑請根據實際修改)
1
2
3
|
[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安裝包下載
1
2
3
4
5
6
|
[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)配置文件全部內容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
[root@~] # vim /etc/my.cnf [mysqld_multi] mysqld = /usr/local/mysql/bin/mysqld mysqladmin = /usr/local/mysql/bin/mysqladmin log = /data/mysql/mysqld_multi .log #user=root #pass= [mysql] prompt= "\u@jsshapp \R:\m:\s [\d]> " no-auto-rehash [mysqld3306] user = mysql port = 3306 symbolic-links = 0 #basedir = /usr/ 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 log_bin_trust_function_creators = 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:12M:autoextend:max:2000M innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2000M 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 = 16k 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 [mysqld3307] user = mysql port = 3307 symbolic-links = 0 lower_case_table_names = 1 #basedir = /usr/ 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:12M:autoextend:max:2000M innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:2000M 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 = 16k 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 |
2.7.4. 配置MySQL環境變量
1
2
3
|
[root@~]# echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile [root@~]# tail -1 /etc/profile [root@~]# source /etc/profile |
2.7.5. testone實例初始化
? 操作實例初始化
1
2
3
4
|
[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文件
1
|
[root@~]# mysql_ssl_rsa_setup --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/3306/data |
? 啟動testone實例
1
2
3
4
5
|
[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密碼
1
2
3
4
5
6
|
[root@~]# less /tmp/3306.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; |
? 驗證 testone root用戶統一密碼(界面正常輸出information_schema內容表示正常)
1
2
|
[root@~]# mysql -uroot -p -S /data/mysql/3306/mysql3306.sock -e "show databases;" | grep information_schema Enter password: |
? 修改my.cnf配置文件,將修改的統一密碼,添加到配置文件中
1
2
3
|
[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實例
1
2
|
[root@~]# mysqld_multi stop 3306 [root@~]# netstat -tnlp|grep 3306 ---輸入結果為空表示服務停止正常 |
2.7.6. testtwo實例初始化
? 操作實例初始化
1
2
3
4
5
6
7
|
[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實例
1
|
[root@~]# mysqld_multi start 3307 |
----使用tail命令查看啟動日志,有出現即表示啟動成功
1
2
|
[root@~]# tail -100f /data/mysql/3307/logs/error.log Version: '5.7.28-log' socket: '/data/mysql/3307/mysql3307.sock' port: 3307 MySQL Community Server (GPL) |
? 修改root密碼
1
2
3
4
5
6
|
[root@~]# less /tmp/3307.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; |
? 驗證 testtwo root用戶統一密碼(界面正常輸出information_schema內容表示正常)
1
|
[root@~]# mysql -uroot -p -S /data/mysql/3307/mysql3307.sock -e "show databases;" | grep information_schema |
Enter password:
? 停止testtwo實例
1
2
|
[root@~]# mysqld_multi stop 3307 [root@~]# netstat -tnlp|grep 3307 ---輸入結果為空表示服務停止正常 |
2.7.7. mysqld_multi多實例管理命令
? 啟動全部實例
[root@~]# mysqld_multi start
? 停止單個實例
1
2
|
[root@~]# mysqld_multi stop 3306 [root@~]# mysqld_multi stop 3307 |
? 啟動單個實例
1
2
|
[root@~]# mysqld_multi start 3306 [root@~]# mysqld_multi start 3307 |
? 查看全部實例的狀態(is running)
1
2
3
4
|
[root@~]# mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running |
? 查看單個實例狀態
1
2
3
4
5
6
|
[root@~]# mysqld_multi report 3306 Reporting MySQL servers MySQL server from group: mysqld3306 is running [root@~]# mysqld_multi report 3307 Reporting MySQL servers MySQL server from group: mysqld3307 is running |
? 停止全部實例
[root@~]# mysqld_multi stop
2.7.8. 數據導入
(1)將待導入的數據庫腳本(test.sql、testtwo.sql)文件(名稱根據實際情況操作)上傳至/data/路徑下
(2)使用命令確認兩實例已經處于運行狀態
1
2
3
4
|
[root@~]# mysqld_multi report Reporting MySQL servers MySQL server from group: mysqld3306 is running MySQL server from group: mysqld3307 is running |
(3)進入testone的mysql數據庫創建testone數據庫實例、用戶名及密碼并導入數據
1
2
3
4
5
6
7
8
|
[root@~]# cd /data/ [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,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服務數據庫實例、用戶名與密碼并導入數據
1
2
3
4
5
6
7
|
[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,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. 防火墻配置
? 根據實際要求,添加開放端口
1
2
|
[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多實例,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
原文鏈接:https://blog.51cto.com/8355320/2466817