timmy a révisé ce gist 9 months ago. Aller à la révision
1 file changed, 12 insertions
mysql_show_variables.sql(fichier créé)
| @@ -0,0 +1,12 @@ | |||
| 1 | + | SHOW VARIABLES | |
| 2 | + | WHERE Variable_name IN ( | |
| 3 | + | 'max_connections', | |
| 4 | + | 'table_open_cache', | |
| 5 | + | 'innodb_buffer_pool_size', | |
| 6 | + | 'innodb_redo_log_capacity', | |
| 7 | + | 'innodb_flush_log_at_trx_commit', | |
| 8 | + | 'sync_binlog', | |
| 9 | + | 'log_bin_trust_function_creators', | |
| 10 | + | 'authentication_policy', | |
| 11 | + | 'skip_name_resolve' | |
| 12 | + | ); | |
timmy a révisé ce gist 9 months ago. Aller à la révision
1 file changed, 19 insertions, 2 deletions
my.cnf
| @@ -1,12 +1,29 @@ | |||
| 1 | 1 | # ./mysql_data/my.cnf | |
| 2 | 2 | ||
| 3 | 3 | [mysqld] | |
| 4 | + | # 最大連線數:如果硬體夠強,可以考慮提高,不過 150 是個穩妥的選擇 | |
| 4 | 5 | max_connections = 150 | |
| 5 | - | table_open_cache = 400 | |
| 6 | + | ||
| 7 | + | # 表快取:如果資料表很多,可以稍微調高這個值,同時記得調整 open_files_limit | |
| 8 | + | table_open_cache = 500 | |
| 9 | + | ||
| 10 | + | # InnoDB 緩衝池:建議設成可用記憶體的 70-80%,記憶體夠用的話可以再調高 | |
| 6 | 11 | innodb_buffer_pool_size = 512M | |
| 12 | + | ||
| 13 | + | # Redo 日誌容量:256M 對於寫入量中等或較高的環境通常夠用,如果寫入特別多可考慮調高 | |
| 7 | 14 | innodb_redo_log_capacity = 256M | |
| 15 | + | ||
| 16 | + | # 日誌同步:1 能確保資料安全(ACID),但效能會稍微受影響;如果可以接受風險,調成 2 也行 | |
| 8 | 17 | innodb_flush_log_at_trx_commit = 1 | |
| 9 | - | sync_binlog = 0 | |
| 18 | + | ||
| 19 | + | # binlog 同步:設成 1 可以確保 binlog 跟資料庫保持一致,除非追求極致效能,否則建議用 1 | |
| 20 | + | sync_binlog = 1 | |
| 21 | + | ||
| 22 | + | # 關於儲存過程和觸發器:這樣設定可以避免一些權限上的麻煩 | |
| 10 | 23 | log_bin_trust_function_creators = 1 | |
| 24 | + | ||
| 25 | + | # 認證機制:為了相容舊版用戶端,用這個方式不錯,但長遠來看建議跟進預設設定 | |
| 11 | 26 | authentication_policy = 'mysql_native_password' | |
| 27 | + | ||
| 28 | + | # 關閉 DNS 解析:這樣可以讓連線更快些 | |
| 12 | 29 | skip-name-resolve | |
Timmy a révisé ce gist 9 months ago. Aller à la révision
5 files changed, 52 insertions
.env(fichier créé)
| @@ -0,0 +1,3 @@ | |||
| 1 | + | MYSQL_USER=user | |
| 2 | + | MYSQL_PASSWORD=password | |
| 3 | + | MYSQL_ROOT_PASSWORD=rootpassword | |
README.md(fichier créé)
| @@ -0,0 +1,16 @@ | |||
| 1 | + | | 變數 | 作用 | 預設值 | | |
| 2 | + | | --------------------- | ---------------- | -------------- | | |
| 3 | + | | `MYSQL_DATABASE` | 預設建立的資料庫 | `myapp` | | |
| 4 | + | | `MYSQL_USER` | 普通使用者帳號 | `user` | | |
| 5 | + | | `MYSQL_PASSWORD` | 普通使用者密碼 | `password` | | |
| 6 | + | | `MYSQL_ROOT_PASSWORD` | Root 使用者密碼 | `rootpassword` | | |
| 7 | + | ||
| 8 | + | ||
| 9 | + | ```bash | |
| 10 | + | docker exec -it mysql-container mysql -uroot -p | |
| 11 | + | ``` | |
| 12 | + | ||
| 13 | + | ```sql | |
| 14 | + | SHOW VARIABLES LIKE 'innodb_buffer_pool_size'; | |
| 15 | + | SHOW VARIABLES LIKE 'max_connections'; | |
| 16 | + | ``` | |
docker-compose.yml(fichier créé)
| @@ -0,0 +1,15 @@ | |||
| 1 | + | services: | |
| 2 | + | mysql: | |
| 3 | + | container_name: mysql-container | |
| 4 | + | image: mysql:8.0 | |
| 5 | + | ports: | |
| 6 | + | - "3306:3306" | |
| 7 | + | environment: | |
| 8 | + | MYSQL_DATABASE: myapp | |
| 9 | + | MYSQL_USER: ${MYSQL_USER} | |
| 10 | + | MYSQL_PASSWORD: ${MYSQL_PASSWORD} | |
| 11 | + | MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} | |
| 12 | + | volumes: | |
| 13 | + | - ./mysql_data:/var/lib/mysql | |
| 14 | + | - ./mysql_data/my.cnf:/etc/mysql/my.cnf | |
| 15 | + | restart: always | |
my.cnf(fichier créé)
| @@ -0,0 +1,12 @@ | |||
| 1 | + | # ./mysql_data/my.cnf | |
| 2 | + | ||
| 3 | + | [mysqld] | |
| 4 | + | max_connections = 150 | |
| 5 | + | table_open_cache = 400 | |
| 6 | + | innodb_buffer_pool_size = 512M | |
| 7 | + | innodb_redo_log_capacity = 256M | |
| 8 | + | innodb_flush_log_at_trx_commit = 1 | |
| 9 | + | sync_binlog = 0 | |
| 10 | + | log_bin_trust_function_creators = 1 | |
| 11 | + | authentication_policy = 'mysql_native_password' | |
| 12 | + | skip-name-resolve | |
mysql_database_table_info.sql(fichier créé)
| @@ -0,0 +1,6 @@ | |||
| 1 | + | SELECT TABLE_SCHEMA AS DATABASE_NAME, | |
| 2 | + | TABLE_NAME, | |
| 3 | + | TABLE_ROWS AS RECORDS, | |
| 4 | + | ROUND((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024, 2) AS SIZE_MB | |
| 5 | + | FROM INFORMATION_SCHEMA.TABLES | |
| 6 | + | ORDER BY DATABASE_NAME, SIZE_MB DESC; | |