From 6c0dc2fc68161547bc775a37eae6d1039a0deab5 Mon Sep 17 00:00:00 2001 From: hubqin Date: Thu, 28 Nov 2019 23:17:03 +0800 Subject: [PATCH] resolve mysql start error --- conf/mysql/my.cnf | 167 ++++++--------------------------------------- docker-compose.yml | 6 +- 2 files changed, 24 insertions(+), 149 deletions(-) diff --git a/conf/mysql/my.cnf b/conf/mysql/my.cnf index f94b58b..1f2511c 100644 --- a/conf/mysql/my.cnf +++ b/conf/mysql/my.cnf @@ -1,154 +1,29 @@ -# Optimized my.cnf configuration for MySQL/MariaSQL +# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # -# by Fotis Evangelou, developer of Engintron (engintron.com) +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; version 2 of the License. # -# === Updated December 2018 === +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# The settings provided below are a starting point for a 2GB - 4GB RAM server with 2-4 CPU cores. -# If you have less or more resources available you should adjust accordingly to save CPU, -# RAM and disk I/O usage. -# The settings marked with a specific comment or the word "UPD" after the value -# should be adjusted for your system by using database diagnostics tools like: -# https://github.com/major/MySQLTuner-perl -# or -# https://launchpad.net/mysql-tuning-primer (supports MySQL up to v5.6) -# -# -# Note that if there is NO comment after a setting value, then 99,9% of the times you won't need to adjust it. -# -# -# THINGS TO DO AFTER YOU UPDATE MY.CNF - TROUBLESHOOTING -# If any terminal commands are mentioned, make sure you execute them as "root" user. -# If MySQL cannot start or restart, then perform the following actions. -# -# 1. If the server had the stock database configuration and you added or updated any -# "innodb_log_*" settings (as suggested below), then execute these commands ONLY -# the first time you apply this configuration: -# -# $ rm -rvf /var/lib/mysql/ib_logfile* -# $ chown -R mysql:mysql /var/lib/mysql -# $ service mysql restart -# -# or use the shorthand command: -# $ rm -rvf /var/lib/mysql/ib_logfile*; chown -R mysql:mysql /var/lib/mysql; service mysql restart -# -# 2. If the setting "bind-address" is not commented out, then make sure the file /etc/hosts is -# properly configured. A good example of a "clean" /etc/hosts file is something like this: -# -# 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 -# ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 -# 1.2.3.4 hostname.domain.tld hostname # Replace accordingly! -# -# Finally restart the database service: -# -# $ service mysql restart -# -# 3. If the database service cannot restart even after the first 2 steps, make sure the database data folder -# (common for either MySQL or MariaDB) "/var/lib/mysql" is owned by the "mysql" user AND group. -# Additionally, the folder itself can have 0751 or 0755 file permissions. To fix it, simply do this: -# $ chown -R mysql:mysql /var/lib/mysql -# $ chmod 0755 /var/lib/mysql +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + # -# Finally restart the database service: +# The MySQL Server configuration file. # -# $ service mysql restart - -[mysql] -port = 3306 -socket = /var/run/mysqld/mysqld.sock +# For explanations see +# http://dev.mysql.com/doc/mysql/en/server-system-variables.html [mysqld] -# Required Settings -basedir = /usr -bind_address = 127.0.0.1 # Change to 0.0.0.0 to allow remote servers to connect to this server's - # database instance -datadir = /var/lib/mysql -max_allowed_packet = 256M -max_connect_errors = 1000000 -pid_file = /var/run/mysqld/mysqld.pid -port = 3306 -skip_external_locking -skip_name_resolve -socket = /var/run/mysqld/mysqld.sock -#sql_mode = ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES # Enable for b/c with databases - # using null dates -tmpdir = /tmp -user = mysql - -# InnoDB Settings -default_storage_engine = InnoDB -innodb_buffer_pool_instances = 2 # Use 1 instance per 1GB of InnoDB pool size -innodb_buffer_pool_size = 2G # Use up to 70-80% of RAM & optionally check if /proc/sys/vm/swappiness is set to 0 -innodb_file_per_table = 1 -innodb_flush_log_at_trx_commit = 0 -innodb_flush_method = O_DIRECT -innodb_log_buffer_size = 16M -innodb_log_file_size = 512M -innodb_stats_on_metadata = 0 - -#innodb_temp_data_file_path = ibtmp1:64M:autoextend:max:20G # Control the maximum size for the ibtmp1 file -#innodb_thread_concurrency = 4 # Optional: Set to the number of CPUs on your system (minus 1 or 2) to better - # contain CPU usage. E.g. if your system has 8 CPUs, try 6 or 7 and check - # the overall load produced by MySQL/MariaDB. -innodb_read_io_threads = 64 -innodb_write_io_threads = 64 - -# MyISAM Settings -query_cache_limit = 4M # UPD - Option supported up to MySQL v5.7 -query_cache_size = 48M # UPD - Option supported up to MySQL v5.7 -query_cache_type = 1 # Option supported up to MySQL v5.7 - -key_buffer_size = 48M # UPD - -low_priority_updates = 1 -concurrent_insert = 2 - -# Connection Settings -max_connections = 100 # UPD - -back_log = 512 -thread_cache_size = 100 -thread_stack = 192K - -interactive_timeout = 180 -wait_timeout = 180 - -# Buffer Settings -join_buffer_size = 4M # UPD -read_buffer_size = 3M # UPD -read_rnd_buffer_size = 4M # UPD -sort_buffer_size = 4M # UPD - -# Table Settings -# In systemd managed systems like Ubuntu 16.04 or CentOS 7, you need to perform an extra action for table_open_cache & open_files_limit -# to be overriden (also see comment next to open_files_limit). -# E.g. for MySQL 5.7, please check: https://dev.mysql.com/doc/refman/5.7/en/using-systemd.html -# and for MariaDB check: https://mariadb.com/kb/en/library/systemd/ -table_definition_cache = 10000 # UPD -table_open_cache = 10000 # UPD -open_files_limit = 60000 # UPD - This can be 2x to 3x the table_open_cache value or match the system's - # open files limit usually set in /etc/sysctl.conf or /etc/security/limits.conf - # In systemd managed systems this limit must also be set in: - # /etc/systemd/system/mysqld.service.d/override.conf (for MySQL 5.7+) and - # /etc/systemd/system/mariadb.service.d/override.conf (for MariaDB) - -max_heap_table_size = 128M -tmp_table_size = 128M - -# Search Settings -ft_min_word_len = 3 # Minimum length of words to be indexed for search results - -# Logging -log_error = /var/lib/mysql/mysql_error.log -log_queries_not_using_indexes = 1 -long_query_time = 5 -slow_query_log = 0 # Disabled for production -slow_query_log_file = /var/lib/mysql/mysql_slow.log +pid-file = /var/run/mysqld/mysqld.pid +socket = /var/run/mysqld/mysqld.sock +datadir = /var/lib/mysql +secure-file-priv= NULL -[mysqldump] -# Variable reference -# For MySQL 5.7: https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html -# For MariaDB: https://mariadb.com/kb/en/library/mysqldump/ -quick -quote_names -max_allowed_packet = 64M +# Custom config should go here +!includedir /etc/mysql/conf.d/ diff --git a/docker-compose.yml b/docker-compose.yml index 33a8f4f..de5b3a0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,17 +2,17 @@ version: "3" services: mysql: image: mysql:latest + user: ${CURRENT_UID} # run by current user, should run CURRENT_UID=$(id -u):$(id -g) before docker-compose up volumes: - - ./log/mysql:/var/log/mysql # TODO: to be confirm - ./data/mysql:/var/lib/mysql - - ./conf/mysql:/etc/mysql + - ./conf/mysql/my.cnf:/etc/mysql/my.cnf networks: - mysql ports: - "3306:3306" environment: - MYSQL_ROOT_PASSWORD=root # change to your password! - command: mysqld --default-authentication-plugin=mysql_native_password + command: --default-authentication-plugin=mysql_native_password redis: image: redis:latest