Maison >base de données >tutoriel mysql >Installation de plusieurs instances MySQL

Installation de plusieurs instances MySQL

藏色散人
藏色散人avant
2019-05-07 09:22:042625parcourir


Étape 1. Préparation

Fermez le pare-feu ; installez les dépendances MySQL ; Utilisez la bibliothèque libaio ; téléchargez, décompressez et renommez le fichier exécutable MySQL ; créez de nouveaux groupes d'utilisateurs et utilisateurs et les autres préparations ne seront pas décrites ici.

Le répertoire du fichier exécutable est /data/mysql57

Ajouter des instructions d'utilisateur et de groupe

groupadd mysql
useradd mysql -g mysql

Étape 2 . Ajoutez des variables d'environnement

Dans le fichier /etc/profile, ajoutez PATH=${PATH}:/data/mysql57/bin/

Après avoir enregistré, comme To. prendre effet immédiatement, exécutez la source /etc/profile.

étape 3. Créez le répertoire et autorisez-le

Exécuter

mkdir -p mysql3306/data mysql3306/mysql_log mysql3306/tmp mysql3307/data  mysql3307/mysql_log  mysql3307/tmp mysqld_multi/log

dans les données répertoire racine

Cette étape est essentielle pour créer un fichier journal.

touch /data/mysql3306/mysql_log/mysql3306.errtouch /data/mysql3307/mysql_log/mysql3307.err

Donner des autorisations de répertoire et de fichier

chown -R mysql.mysql mysql3* mysqld_multi

Dans ce cas de test, mysql57 est copié à partir d'autres services, non téléchargé et décompressé directement, donc les deux suivantes sont ajoutées à l'opération d'autorisation d'étape.

chmod -R 755 /data/mysql57/bin
rrree

étape 4. Modifier my.cnf

chmod -R 755 /data/mysql57/support-files

étape 5. Initialiser l'instance

Initialisez l'instance du port 3306, faites attention au mot de passe temporaire généré.

[client]
host=localhost
socket = /tmp/mysql.sock 
default-character-set=utf8mb4
#loose-local-infile=0

[mysqld]
user=mysql
log_bin_trust_function_creators=1
secure_file_priv='/tmp'

########server setting#######
sql_mode = "ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
lower_case_table_names = 0
skip_name_resolve = 1
#max_connect_errors = 1000
max_connections = 2000
thread_cache_size=256
#thread_stack= 262144
#back_log=80
max_allowed_packet = 134217728
event_scheduler = 1 
local-infile=0
#lower_case_table_names = 1
explicit_defaults_for_timestamp = 1
expire_logs_days = 7
log_bin_trust_function_creators =1

####.frm/.ibd files qty related
open_files_limit=65535
innodb_open_files=65535
table_open_cache=65535
table_definition_cache=65535

#### seesion buffer related
read_buffer_size = 262144
read_rnd_buffer_size = 524288
sort_buffer_size = 8388608
join_buffer_size = 8388608

####memory table size 
tmp_table_size =67108864
max_heap_table_size=67108864

####timeout
interactive_timeout = 1800
wait_timeout = 1800
# connect_timeout=10

########slow query ########
slow_query_log = 1
log_slow_slave_statements = 1
#log_queries_not_using_indexes = 1
log_throttle_queries_not_using_indexes = 10
long_query_time = 1
#min_examined_row_limit = 10000

########innodb settings########
innodb_buffer_pool_size = 10737418240
innodb_buffer_pool_instances = 16 
innodb_buffer_pool_dump_pct = 40
innodb_lru_scan_depth = 2048
innodb_page_cleaners = 16
#innodb_purge_threads = 4
innodb_sort_buffer_size = 67108864
#innodb_file_per_table = 1
#innodb_flush_log_at_trx_commit = 1

innodb_undo_log_truncate = 1
innodb_undo_tablespaces = 3 
innodb_max_undo_log_size = 2147483648
innodb_purge_rseg_truncate_frequency = 128

innodb_log_file_size = 1073741824
innodb_log_files_in_group = 3
innodb_log_buffer_size = 16777216
innodb_flush_method = O_DIRECT
innodb_flush_neighbors = 0
innodb_print_all_deadlocks = 1

innodb_strict_mode = 1
#innodb_lock_wait_timeout = 50

innodb_io_capacity = 32768
innodb_io_capacity_max = 65536
innodb_thread_concurrency = 32
innodb_write_io_threads = 8
innodb_read_io_threads = 8

########replication settings########
master_info_repository = TABLE
relay_log_info_repository = TABLE

gtid_mode = on
enforce_gtid_consistency = 1
binlog_gtid_simple_recovery=1
relay_log_recovery = 1

slave-parallel-type = LOGICAL_CLOCK
slave-parallel-workers = 16
slave_transaction_retries=128
slave_preserve_commit_order=1

log_slave_updates=1
binlog_format = ROW
log_timestamps=system

binlog_rows_query_log_events = 1
binlog_row_image='full' 
slave_skip_errors = ddl_exist_errors

########semi sync replication settings########
##plugin_dir=/data/mysql/plugin/
#plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
#rpl_semi_sync_master_enabled = 1
#rpl_semi_sync_master_timeout = 5000
#rpl_semi_sync_slave_enabled = 1

[mysqld_multi]
mysqld = /data/mysql57/bin/mysqld_safe
mysqladmin = /data/mysql57/bin/mysqladmin
log = /data/mysqld_multi/log/mysqld_multi.log

[mysqld3306]  
basedir = /data/mysql57
mysqladmin=mysqladmin
datadir=/data/mysql3306/data
port=3306  
server_id=102473306
socket= /tmp/mysql_3306.sock
tmpdir = /data/mysql3306/tmp
pid-file = /data/mysql3306/mysql_log/mysql3306.pid
slow_query_log_file = /data/mysql3306/mysql_log/mysql3306_slow_new.log  
log-error = /data/mysql3306/mysql_log/mysql3306.err
general_log_file= /data/mysql3306/mysql_log/mysql3306.genlog
log-bin = /data/mysql3306/mysql_log/mysql3306_bin
relay_log = /data/mysql3306/mysql_log/relay3306.log

innodb_buffer_pool_size = 90G
innodb_buffer_pool_instances = 8

[mysqld3307]
basedir = /data/mysql57
mysqladmin=mysqladmin
datadir=/data/mysql3307/data
port=3307
server_id=102473307
socket= /tmp/mysql_3307.sock
tmpdir = /data/mysql3307/tmp
pid-file = /data/mysql3307/mysql_log/mysql3307.pid
slow_query_log_file = /data/mysql3307/mysql_log/mysql3307_slow_new.log
log-error = /data/mysql3307/mysql_log/mysql3307.err
general_log_file= /data/mysql3307/mysql_log/mysql3307.genlog
log-bin = /data/mysql3307/mysql_log/mysql3307_bin
relay_log = /data/mysql3307/mysql_log/relay3307.log

innodb_buffer_pool_size = 90G
innodb_buffer_pool_instances = 8

[mysqldump]
quick

Initialisez l'instance du port 3307, faites attention au mot de passe temporaire généré.

/data/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/data/mysql57  --datadir=/data/mysql3306/data

étape 6. Copiez et générez mysqld_multi et ajoutez-le au démarrage

/data/mysql57/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --basedir=/data/mysql57  --datadir=/data/mysql3307/data
cp /data/mysql57/support-files/mysqld_multi.server /etc/init.d/mysqld_multi

étape 7. Plusieurs instances de Mysqld Open

Ouvrir toutes les instances

chkconfig  --add mysqld_multi

Afficher l'état d'ouverture (afficher l'état de toutes les instances)

mysqld_multi start

Ouvrir l'instance spécifiée

Ouvrez [mysqld3306] dans /etc/my.cnf où le numéro après mysqld est l'étiquette, par exemple, l'étiquette 3306

mysqld_multi report

ouvre également l'instance d'étiquette 3307

mysqld_multi start 3306

(remarque : ici, il n'y a aucune mention de l'arrêt de l'instance via la commande mysqld_multi stop. Pourquoi pas, car la commande n'est pas valide. L'opération de l'étape 9 la rendra valide)

étape 8. Connectez-vous à l'instance pour la première fois et modifiez le compte root

La connexion multi-instance nécessite de spécifier le paramètre socket

La méthode de connexion au 3306. L'instance dans ce test est :

mysqld_multi start 3307

étape 9. Accordez l'autorisation d'arrêter l'instance via mysqld_multi stop.

Pour fermer l'instance, vous devez configurer l'utilisateur root et le mot de passe, et modifier le fichier /etc/my.cnf.

Ajoutez

mysql  -S /tmp/mysql_3306.sock -uroot --port 3306 -p

dans la position [client] car le mot de passe du compte doit être conservé dans le fichier, ce qui constitue un risque de sécurité. La nécessité de le configurer ainsi dans l'environnement réel dépend de la situation spécifique et des exigences de sécurité.

Après les étapes ci-dessus, 2 instances MySQL ont été installées avec succès sur ce serveur, une avec le port 3306 et l'autre avec le port 3307


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer