1. システムインストールパッケージ yum -y インストール make gcc-c++ cmake bison-devel ncurses-devel readline-devel libaio-devel perl libaio wget lrzsz vim libnuma* bzip2 xz 2. ファイアウォールとSELinuxをオフにする sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 強制0を設定する /etc/init.d/iptables を停止する echo "/etc/init.d/iptables stop">>/etc/rc.local 3. システム制限パラメータを変更する cat >> /etc/security/limits.conf << EOF # ###カスタム # * ソフトノーファイル 20480 * ハードnofile 65535 * ソフト nproc 20480 * ハード nproc 65535 終了 4. 各ホストのホスト解像度を設定する cat >> /etc/hosts <<"EOF" 10.10.146.28 bj-db-m1 10.10.1.139 bj-db-m2 10.10.173.84 bj-db-m3 終了 5. カーネルパラメータを変更する cat >>/etc/sysctl.conf <<"EOF" vm.swappiness=0 #TCP でサポートされるキューの数を増やす net.ipv4.tcp_max_syn_backlog = 65535 #切断時にリソースのリサイクルを減らす net.ipv4.tcp_max_tw_buckets = 8000 ネット.ipv4.tcp_tw_reuse = 1 ネット.ipv4.tcp_tw_recycle = 1 ネット.ipv4.tcp_fin_timeout = 10 #ローカルポート範囲を変更する net.ipv4.ip_local_port_range = 1024 65535 #キューに入る接続をさらに許可する net.ipv4.tcp_max_syn_backlog = 4096 #ローカルのみで使用されるデータベースサーバーの場合 net.ipv4.tcp_fin_timeout = 30 #ポート監視キュー net.core.somaxconn=65535 #データ受信速度 net.core.netdev_max_backlog=65535 ネットコアwmem_default=87380 ネットコアwmem_max=16777216 ネットコアrmem_default=87380 ネットコアrmem_max=16777216 終了 sysctl -p 6. インストールパッケージをダウンロードする https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz をダウンロードします。 # インストールパッケージを解凍します tar -xJf mysql-8.0.18-linux-glibc2.12-x86_64.tar.xz # ディレクトリに入り、将来のアップグレードを容易にするためにソフトリンクを作成します cd /usr/local/ ln -s /opt/mysql-8.0.18-linux-glibc2.12-x86_64 mysql # ユーザーグループを作成、mysql に追加 ユーザー追加 -g mysql mysql -d /home/mysql -s /sbin/nologin # 対応するディレクトリを作成します mkdir -p /data/mysql/mysql_3306/{logs,tmp,undolog} 7. my.cnf設定ファイルを作成する 7-1. 最初のマシン構成 # まず if [ -f /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.`日付 +%Y%m%d%H%m`.bak フィ # ノード1 cat >/data/mysql/mysql_3306/my_3306.cnf <<"EOF" [クライアント] ポート = 3306 ソケット = /data/mysql/mysql_3306/tmp/mysql_3306.sock [mysql] プロンプト="\u@\h \R:\m:\s [\d]> " 自動再ハッシュなし [mysqld] ユーザー = mysql ポート = 3306 管理者アドレス = 127.0.0.1 ベースディレクトリ = /usr/local/mysql データディレクトリ = /data/mysql/mysql_3306/data ソケット = /data/mysql/mysql_3306/tmp/mysql_3306.sock pid ファイル = mysql_3306.pid 文字セットサーバー = utf8mb4 スキップ名解決 = 1 # テーブルを複製しない = mysql.% # 複製ワイルド無視テーブル = テスト.% #replicate-wild-ignore-table=information_schema.% # 2マスター構成 #サーバー1 #自動増分オフセット = 1 #自動増分 = 2 #サーバー2 #自動増分オフセット = 2 #自動増分 = 2 # 準同期レプリケーション設定 # #plugin_dir = /usr/local/mysql/lib/mysql/plugin #plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" plugin_dir = /usr/local/mysql/lib/plugin #公式バージョンのパス plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #公式バージョンのパス slave_parallel_workers = 4 スレーブパラレルタイプ = LOGICAL_CLOCK スレーブ_preserve_commit_order = 1 オープンファイル制限 = 65535 バックログ = 1024 最大接続数 = 1024 最大接続エラー数 = 1000000 テーブルオープンキャッシュ = 1024 テーブル定義キャッシュ = 1024 テーブルオープンキャッシュインスタンス = 64 スレッドスタック = 512K 外部ロック = FALSE 最大許容パケット = 32M ソートバッファサイズ = 4M 結合バッファサイズ = 4M スレッドキャッシュサイズ = 1536 インタラクティブタイムアウト = 600 待機タイムアウト = 600 tmp_table_size = 32M 最大ヒープテーブルサイズ = 32M 遅いクエリログ = 1 log_timestamps = システム slow_query_log_file = /data/mysql/mysql_3306/logs/slow.log ログエラー = /data/mysql/mysql_3306/logs/error.log 長いクエリ時間 = 0.1 ログクエリがインデックスを使用していない = 1 ログスロットルクエリがインデックスを使用していない = 60 検査行数の最小制限 = 100 ログ_遅い_管理ステートメント = 1 ログ_スロー_スレーブ_ステートメント = 1 サーバーID = 1423306 ログ bin = /data/mysql/mysql_3306/logs/mysql-bin 同期バイナリログ = 1 binlog_cache_size = 4M 最大バイナリログキャッシュサイズ = 2G 最大バイナリログサイズ = 1G binlog_expire_logs_seconds=2592000 マスター情報リポジトリ = テーブル リレーログ情報リポジトリ = テーブル gtid_mode = オン 強制GTID一貫性 = 1 binlog_checksum=なし ログスレーブ更新 スレーブ行検索アルゴリズム = 'INDEX_SCAN、HASH_SCAN' binlog_format = 行 binlog_row_image=フル リレーログリカバリ = 1 リレーログパージ = 1 キーバッファサイズ = 32M 読み取りバッファサイズ = 8M 読み取りバッファサイズ = 4M バルク挿入バッファサイズ = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 ロック待機タイムアウト = 3600 タイムスタンプの明示的なデフォルト = 1 innodb_thread_concurrency = 0 innodb_sync_spin_loops = 100 innodb_spin_wait_delay = 30 #transaction_isolation = 繰り返し読み取り transaction_isolation = READ-COMMITTED #innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 2867M innodb_buffer_pool_instances = 4 起動時の innodb_buffer_pool_load = 1 シャットダウン時の innodb_buffer_pool_dump_at_shutdown = 1 innodb_data_file_path = ibdata1:1G:自動拡張 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 32M innodb_log_file_size = 2G innodb_log_files_in_group = 3 innodb_max_undo_log_size = 4G innodb_undo_directory = /data/mysql/mysql_3306/undolog # サーバーの IOPS 能力に応じて調整します。# 通常の SSD を使用する場合は、10,000 ~ 20,000 に調整できます。 # ハイエンドのPCIe SSDカードを構成する場合は、50000~80000のように高く調整できます。 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 innodb_flush_sync = 0 innodb_flush_neighbors = 0 innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_purge_threads = 4 innodb_page_cleaners = 4 innodb_open_files = 65535 innodb_max_dirty_pages_pct = 50 innodb_flush_method = O_DIRECT innodb_lru_scan_depth = 4000 innodb_checksum_algorithm = crc32 innodb_lock_wait_timeout = 10 innodb_rollback_on_timeout = 1 innodb_print_all_deadlocks = 1 innodb_file_per_table = 1 innodb_online_alter_log_max_size = 4G innodb_stats_on_metadata = 0 # MySQL 8 用の変数 ログエラーの詳細度 = 3 innodb_print_ddl_logs = 1 binlog_expire_logs_seconds = 2592000 #innodb_dedicated_server = 0 innodb_status_file = 1 # 注意: innodb_status_output と innodb_status_output_locks を有効にすると、ログエラーファイルがより速く大きくなる可能性があります innodb_status_output = 0 innodb_status_output_locks = 0 #パフォーマンススキーマ パフォーマンススキーマ = 1 performance_schema_instrument = '%memory%=オン' パフォーマンス スキーマ インストルメント = '%lock%=on' #innodb モニター innodb_monitor_enable="モジュール_innodb" innodb_monitor_enable="モジュールサーバー" innodb_monitor_enable="モジュール_dml" innodb_monitor_enable="モジュール_ddl" innodb_monitor_enable="module_trx" innodb_monitor_enable="モジュール_os" innodb_monitor_enable="モジュールパージ" innodb_monitor_enable="モジュールログ" innodb_monitor_enable="モジュールロック" innodb_monitor_enable="モジュールバッファ" innodb_monitor_enable="モジュールインデックス" innodb_monitor_enable="モジュール_ibuf_system" innodb_monitor_enable="モジュールバッファページ" innodb_monitor_enable="モジュール適応ハッシュ" #MGR : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 素早い 最大許容パケット = 32M [mysqld_safe] #malloc-lib=/usr/local/mysql/lib/jmalloc.so ナイス=-19 オープンファイル制限=65535 終了 7-2. 2台目のマシン構成 # 2番目のマシンif [ -f /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.`日付 +%Y%m%d%H%m`.bak フィ # ノード1 cat >/data/mysql/mysql_3306/my_3306.cnf <<"EOF" [クライアント] ポート = 3306 ソケット = /data/mysql/mysql_3306/tmp/mysql_3306.sock [mysql] プロンプト="\u@\h \R:\m:\s [\d]> " 自動再ハッシュなし [mysqld] ユーザー = mysql ポート = 3306 管理者アドレス = 127.0.0.1 ベースディレクトリ = /usr/local/mysql データディレクトリ = /data/mysql/mysql_3306/data ソケット = /data/mysql/mysql_3306/tmp/mysql_3306.sock pid ファイル = mysql_3306.pid 文字セットサーバー = utf8mb4 スキップ名解決 = 1 # テーブルを複製しない = mysql.% # 複製ワイルド無視テーブル = テスト.% #replicate-wild-ignore-table=information_schema.% # 2マスター構成 #サーバー1 #自動増分オフセット = 1 #自動増分 = 2 #サーバー2 #自動増分オフセット = 2 #自動増分 = 2 # 準同期レプリケーション設定 # #plugin_dir = /usr/local/mysql/lib/mysql/plugin #plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" plugin_dir = /usr/local/mysql/lib/plugin #公式バージョンのパス plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #公式バージョンのパス slave_parallel_workers = 4 スレーブパラレルタイプ = LOGICAL_CLOCK スレーブ_preserve_commit_order = 1 オープンファイル制限 = 65535 バックログ = 1024 最大接続数 = 1024 最大接続エラー数 = 1000000 テーブルオープンキャッシュ = 1024 テーブル定義キャッシュ = 1024 テーブルオープンキャッシュインスタンス = 64 スレッドスタック = 512K 外部ロック = FALSE 最大許容パケット = 32M ソートバッファサイズ = 4M 結合バッファサイズ = 4M スレッドキャッシュサイズ = 1536 インタラクティブタイムアウト = 600 待機タイムアウト = 600 tmp_table_size = 32M 最大ヒープテーブルサイズ = 32M 遅いクエリログ = 1 log_timestamps = システム slow_query_log_file = /data/mysql/mysql_3306/logs/slow.log ログエラー = /data/mysql/mysql_3306/logs/error.log 長いクエリ時間 = 0.1 ログクエリがインデックスを使用していない = 1 ログスロットルクエリがインデックスを使用していない = 60 検査行数の最小制限 = 100 ログ_遅い_管理ステートメント = 1 ログ_スロー_スレーブ_ステートメント = 1 サーバーID = 1433306 ログ bin = /data/mysql/mysql_3306/logs/mysql-bin 同期バイナリログ = 1 binlog_cache_size = 4M 最大バイナリログキャッシュサイズ = 2G 最大バイナリログサイズ = 1G binlog_expire_logs_seconds=2592000 マスター情報リポジトリ = テーブル リレーログ情報リポジトリ = テーブル gtid_mode = オン 強制GTID一貫性 = 1 binlog_checksum=なし ログスレーブ更新 スレーブ行検索アルゴリズム = 'INDEX_SCAN,HASH_SCAN' binlog_format = 行 binlog_row_image=フル リレーログリカバリ = 1 リレーログパージ = 1 キーバッファサイズ = 32M 読み取りバッファサイズ = 8M 読み取りバッファサイズ = 4M バルク挿入バッファサイズ = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 ロック待機タイムアウト = 3600 タイムスタンプの明示的なデフォルト = 1 innodb_thread_concurrency = 0 innodb_sync_spin_loops = 100 innodb_spin_wait_delay = 30 #transaction_isolation = 繰り返し読み取り transaction_isolation = READ-COMMITTED #innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 2867M innodb_buffer_pool_instances = 4 起動時の innodb_buffer_pool_load = 1 シャットダウン時の innodb_buffer_pool_dump_at_shutdown = 1 innodb_data_file_path = ibdata1:1G:自動拡張 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 32M innodb_log_file_size = 2G innodb_log_files_in_group = 3 innodb_max_undo_log_size = 4G innodb_undo_directory = /data/mysql/mysql_3306/undolog # サーバーの IOPS 能力に応じて調整します。# 通常の SSD を使用する場合は、10,000 ~ 20,000 に調整できます。 # ハイエンドのPCIe SSDカードを構成する場合は、50000~80000のように高く調整できます。 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 innodb_flush_sync = 0 innodb_flush_neighbors = 0 innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_purge_threads = 4 innodb_page_cleaners = 4 innodb_open_files = 65535 innodb_max_dirty_pages_pct = 50 innodb_flush_method = O_DIRECT innodb_lru_scan_depth = 4000 innodb_checksum_algorithm = crc32 innodb_lock_wait_timeout = 10 innodb_rollback_on_timeout = 1 innodb_print_all_deadlocks = 1 innodb_file_per_table = 1 innodb_online_alter_log_max_size = 4G innodb_stats_on_metadata = 0 # MySQL 8 用の変数 ログエラーの詳細度 = 3 innodb_print_ddl_logs = 1 binlog_expire_logs_seconds = 2592000 #innodb_dedicated_server = 0 innodb_status_file = 1 # 注意: innodb_status_output と innodb_status_output_locks を有効にすると、ログエラーファイルがより速く大きくなる可能性があります innodb_status_output = 0 innodb_status_output_locks = 0 #パフォーマンススキーマ パフォーマンススキーマ = 1 performance_schema_instrument = '%memory%=オン' パフォーマンス スキーマ インストルメント = '%lock%=on' #innodb モニター innodb_monitor_enable="モジュール_innodb" innodb_monitor_enable="モジュールサーバー" innodb_monitor_enable="モジュール_dml" innodb_monitor_enable="モジュール_ddl" innodb_monitor_enable="module_trx" innodb_monitor_enable="モジュール_os" innodb_monitor_enable="モジュールパージ" innodb_monitor_enable="モジュールログ" innodb_monitor_enable="モジュールロック" innodb_monitor_enable="モジュールバッファ" innodb_monitor_enable="モジュールインデックス" innodb_monitor_enable="モジュール_ibuf_system" innodb_monitor_enable="モジュールバッファページ" innodb_monitor_enable="モジュール適応ハッシュ" #MGR : : : : : : : : : : : : : : : 素早い 最大許容パケット = 32M [mysqld_safe] #malloc-lib=/usr/local/mysql/lib/jmalloc.so ナイス=-19 オープンファイル制限=65535 終了 7-3. 3番目の構成 # 3番目のステーション if [ -f /etc/my.cnf ]; then mv /etc/my.cnf /etc/my.cnf.`日付 +%Y%m%d%H%m`.bak フィ # ノード1 cat >/data/mysql/mysql_3306/my_3306.cnf <<"EOF" [クライアント] ポート = 3306 ソケット = /data/mysql/mysql_3306/tmp/mysql_3306.sock [mysql] プロンプト="\u@\h \R:\m:\s [\d]> " 自動再ハッシュなし [mysqld] ユーザー = mysql ポート = 3306 管理者アドレス = 127.0.0.1 ベースディレクトリ = /usr/local/mysql データディレクトリ = /data/mysql/mysql_3306/data ソケット = /data/mysql/mysql_3306/tmp/mysql_3306.sock pid ファイル = mysql_3306.pid 文字セットサーバー = utf8mb4 スキップ名解決 = 1 # テーブルを複製しない = mysql.% # 複製ワイルド無視テーブル = テスト.% #replicate-wild-ignore-table=information_schema.% # 2マスター構成 #サーバー1 #自動増分オフセット = 1 #自動増分 = 2 #サーバー2 #自動増分オフセット = 2 #自動増分 = 2 # 準同期レプリケーション設定 # #plugin_dir = /usr/local/mysql/lib/mysql/plugin #plugin_load = "validate_password.so;rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" plugin_dir = /usr/local/mysql/lib/plugin #公式バージョンのパス plugin_load = "rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so" #公式バージョンのパス slave_parallel_workers = 4 スレーブパラレルタイプ = LOGICAL_CLOCK スレーブ_preserve_commit_order = 1 オープンファイル制限 = 65535 バックログ = 1024 最大接続数 = 1024 最大接続エラー数 = 1000000 テーブルオープンキャッシュ = 1024 テーブル定義キャッシュ = 1024 テーブルオープンキャッシュインスタンス = 64 スレッドスタック = 512K 外部ロック = FALSE 最大許容パケット = 32M ソートバッファサイズ = 4M 結合バッファサイズ = 4M スレッドキャッシュサイズ = 1536 インタラクティブタイムアウト = 600 待機タイムアウト = 600 tmp_table_size = 32M 最大ヒープテーブルサイズ = 32M 遅いクエリログ = 1 log_timestamps = システム slow_query_log_file = /data/mysql/mysql_3306/logs/slow.log ログエラー = /data/mysql/mysql_3306/logs/error.log 長いクエリ時間 = 0.1 ログクエリがインデックスを使用していない = 1 ログスロットルクエリがインデックスを使用していない = 60 検査行数の最小制限 = 100 ログ_遅い_管理ステートメント = 1 ログ_スロー_スレーブ_ステートメント = 1 サーバーID = 1443306 ログ bin = /data/mysql/mysql_3306/logs/mysql-bin 同期バイナリログ = 1 binlog_cache_size = 4M 最大バイナリログキャッシュサイズ = 2G 最大バイナリログサイズ = 1G binlog_expire_logs_seconds=2592000 マスター情報リポジトリ = テーブル リレーログ情報リポジトリ = テーブル gtid_mode = オン 強制GTID一貫性 = 1 binlog_checksum=なし ログスレーブ更新 スレーブ行検索アルゴリズム = 'INDEX_SCAN,HASH_SCAN' binlog_format = 行 binlog_row_image=フル リレーログリカバリ = 1 リレーログパージ = 1 キーバッファサイズ = 32M 読み取りバッファサイズ = 8M 読み取りバッファサイズ = 4M バルク挿入バッファサイズ = 64M myisam_sort_buffer_size = 128M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 ロック待機タイムアウト = 3600 タイムスタンプの明示的なデフォルト = 1 innodb_thread_concurrency = 0 innodb_sync_spin_loops = 100 innodb_spin_wait_delay = 30 #transaction_isolation = 繰り返し読み取り transaction_isolation = READ-COMMITTED #innodb_additional_mem_pool_size = 16M innodb_buffer_pool_size = 2867M innodb_buffer_pool_instances = 4 起動時の innodb_buffer_pool_load = 1 シャットダウン時の innodb_buffer_pool_dump_at_shutdown = 1 innodb_data_file_path = ibdata1:1G:自動拡張 innodb_flush_log_at_trx_commit = 1 innodb_log_buffer_size = 32M innodb_log_file_size = 2G innodb_log_files_in_group = 3 innodb_max_undo_log_size = 4G innodb_undo_directory = /data/mysql/mysql_3306/undolog # サーバーの IOPS 能力に応じて調整します。# 通常の SSD を使用する場合は、10,000 ~ 20,000 に調整できます。 # ハイエンドのPCIe SSDカードを構成する場合は、50000~80000のように高く調整できます。 innodb_io_capacity = 4000 innodb_io_capacity_max = 8000 innodb_flush_sync = 0 innodb_flush_neighbors = 0 innodb_write_io_threads = 8 innodb_read_io_threads = 8 innodb_purge_threads = 4 innodb_page_cleaners = 4 innodb_open_files = 65535 innodb_max_dirty_pages_pct = 50 innodb_flush_method = O_DIRECT innodb_lru_scan_depth = 4000 innodb_checksum_algorithm = crc32 innodb_lock_wait_timeout = 10 innodb_rollback_on_timeout = 1 innodb_print_all_deadlocks = 1 innodb_file_per_table = 1 innodb_online_alter_log_max_size = 4G innodb_stats_on_metadata = 0 # MySQL 8 用の変数 ログエラーの詳細度 = 3 innodb_print_ddl_logs = 1 binlog_expire_logs_seconds = 2592000 #innodb_dedicated_server = 0 innodb_status_file = 1 # 注意: innodb_status_output と innodb_status_output_locks を有効にすると、ログエラーファイルがより速く大きくなる可能性があります innodb_status_output = 0 innodb_status_output_locks = 0 #パフォーマンススキーマ パフォーマンススキーマ = 1 performance_schema_instrument = '%memory%=オン' パフォーマンス スキーマ インストルメント = '%lock%=on' #innodb モニター innodb_monitor_enable="モジュール_innodb" innodb_monitor_enable="モジュールサーバー" innodb_monitor_enable="モジュール_dml" innodb_monitor_enable="モジュール_ddl" innodb_monitor_enable="module_trx" innodb_monitor_enable="モジュール_os" innodb_monitor_enable="モジュールパージ" innodb_monitor_enable="モジュールログ" innodb_monitor_enable="モジュールロック" innodb_monitor_enable="モジュールバッファ" innodb_monitor_enable="モジュールインデックス" innodb_monitor_enable="モジュール_ibuf_system" innodb_monitor_enable="モジュールバッファページ" innodb_monitor_enable="モジュール適応ハッシュ" #MGR : : : : : : : : : : : : : : : 素早い 最大許容パケット = 32M [mysqld_safe] #malloc-lib=/usr/local/mysql/lib/jmalloc.so ナイス=-19 オープンファイル制限=65535 終了 8. 権限を変更し、初期化して起動する chown -R mysql.mysql /data/mysql/mysql_3306 chown -R mysql.mysql /usr/local/mysql/ # 初期化 # /usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql --initialize-insecure # 公式の推奨は --initialize を使用することです。これにより、エラー ログに入力するのが難しい一時パスワードが生成されます。ここではパスワードを使用しない方法を使用します。 /usr/local/mysql/bin/mysqld --defaults-file=/data/mysql/mysql_3306/my_3306.cnf --initialize-insecure --user=mysql & #データベースを起動します /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql_3306/my_3306.cnf & 9. ログを表示する #9. ログを確認する# tail -f /data/mysql/mysql_3306/logs/error.log 10. 初回ログイン #10. 最初のログイン /usr/local/mysql/bin/mysql -S /data/mysql/mysql_3306/tmp/mysql_3306.sock 11. パスワードを変更する # パスワード変更方法 set sql_log_bin = 0; ALTER USER 'root'@'localhost' は 'GJjumB6g4FcwdF3R6AZc' によって mysql_native_password で識別され、パスワードは期限切れになりません。 'GJjumB6g4FcwdF3R6AZc' によって mysql_native_password で識別されるユーザー 'root'@'127.0.0.1' を作成します。パスワードは期限切れではありません。 'root'@'127.0.0.1' に *.* のすべての権限を GRANT オプションで付与します。 'fcfmTbRw1tz2x5L5GvjJ' によって mysql_native_password で識別されるユーザー 'admin_m'@'127.0.0.1' を作成します。パスワードは無期限です。 'admin_m'@'127.0.0.1' に *.* のすべての権限を GRANT オプションで付与します。 ユーザー 'admin_m'@'%' を作成します。'fcfmTbRw1tz2x5L5GvjJ' によって mysql_native_password で識別されます。パスワードは期限切れになりません。 'admin_m'@'%' に GRANT オプションを使用して *.* のすべての権限を付与します。 'EeCrfUDO6wRzn72BBQ52' によって mysql_native_password で識別されるユーザー 'test_w'@'%' を作成します。パスワードは期限切れではありません。 db144.* に対する挿入、削除、更新、選択権限を 'test_w'@'%' に付与します。 'EeCrfUDO6wRzn72BBQ52' によって mysql_native_password で識別されるユーザー 'test_r'@'%' を作成します。パスワードは期限切れになりません。 db144.* に対する挿入、削除、更新、選択権限を 'test_r'@'%' に付与します。 'replpfhOTnWffQdQL3F3' によって mysql_native_password で識別されたユーザー 'repl'@'%' を作成します。 *.* のレプリケーションスレーブを 'repl'@'%' に付与します。 sql_log_bin = 1 に設定します。 12. ショートカット設定 ショートカット ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib/ : ローカルマシンでmysqlclient.so.21を実行する ln -s /usr/local/mysql/lib/libmysqlclient.so /usr/lib64/ : := /usr/local/mysql/lib/libmysqlclient.so.21 /usr/lib64/libmysqlclient.so.21 を使います。 ln -s /data/mysql/mysql_3306/tmp/mysql_3306.sock /tmp/mysql.sock ln -s /usr/local/mysql/bin/* /usr/bin/ cat >>~/.bashrc <<"EOF" ########## エイリアス mysql.3306.start="/usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysql/mysql_3306/my_3306.cnf &" エイリアス mysql.3306.stop="/usr/local/mysql/bin/mysqladmin -h127.0.0.1 -P 3306 -uroot -p'GJjumB6g4FcwdF3R6AZc' シャットダウン &" エイリアス mysql.3306.login="/usr/local/mysql/bin/mysql -h127.0.0.1 -P 3306 -uroot -p'GJjumB6g4FcwdF3R6AZc'" ########## 終了 ソース /root/.bash_profile cat >>/etc/ld.so.conf <<"EOF" ローカル 終了 ldconfig mysql.3306.ログイン 13. MGR 構成 13-1. 最初のマシン構成 # MGR の最初のマシン構成: # ステップ 1: レプリケーション用のユーザーを作成します。set sql_log_bin=0; 'JhXpMK44ju8Vp5bxvO2N' によって識別されるユーザー 'repuser'@'%' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを 'repuser'@'%' に付与します。 'JhXpMK44ju8Vp5bxvO2N' によって識別されるユーザー 'repuser'@'127.0.0.1' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを 'repuser'@'127.0.0.1' に付与します。 'JhXpMK44ju8Vp5bxvO2N' によって識別されるユーザー 'repuser'@'localhost' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを 'repuser'@'localhost' に付与します。 sql_log_bin=1 を設定します。 # 手順 2: レプリケーションに使用するユーザーを設定します。チャネル 'group_replication_recovery' のマスターを master_user='repuser'、master_password='JhXpMK44ju8Vp5bxvO2N' に変更します。 # ステップ 3: mysql グループ レプリケーション プラグインをインストールします。 # 注: my.cnf に plugin_load="group_replication=group_replication.so" と記述した場合、plugin group_replication soname 'group_replication.so' をインストールする必要はありません。 # show plugins;show plugins; を実行してインストールが成功したかどうかを確認します。 # ステップ 4: グループを作成します (正式名称はレプリケーション グループを初期化することです)。set global group_replication_bootstrap_group=on; グループレプリケーションを開始します。 グローバル group_replication_bootstrap_group を off に設定します。 performance_schema.replication_group_members から * を選択します。 13-2. 2番目と3番目のマシン構成 ########################################################################## #MGR は他のスレーブ ノードを構成します #すべてのスレーブ ホスト上の mysql で実行します #ステップ 1: レプリケーション用のユーザーを作成します set sql_log_bin=0; 'JhXpMK44ju8Vp5bxvO2N' によって識別されるユーザー 'repuser'@'%' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを 'repuser'@'%' に付与します。 'JhXpMK44ju8Vp5bxvO2N' によって識別されるユーザー 'repuser'@'127.0.0.1' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを 'repuser'@'127.0.0.1' に付与します。 'JhXpMK44ju8Vp5bxvO2N' によって識別されるユーザー 'repuser'@'localhost' を作成します。 *.* 上のレプリケーション スレーブ、レプリケーション クライアントを 'repuser'@'localhost' に付与します。 sql_log_bin=1 を設定します。 # 手順 2: レプリケーションに使用するユーザーを設定します。チャネル 'group_replication_recovery' のマスターを master_user='repuser'、master_password='JhXpMK44ju8Vp5bxvO2N' に変更します。 # ステップ 3: mysql グループ レプリケーション プラグインをインストールします。 # 注: my.cnf に plugin_load="group_replication=group_replication.so" と記述した場合、plugin group_replication soname 'group_replication.so' をインストールする必要はありません。 # show plugins;show plugins; を実行してインストールが成功したかどうかを確認します。 # ステップ 4: 先ほど作成したレプリケーション グループに参加します。start group_replication; performance_schema.replication_group_members から * を選択します。 ######################################################################################### # ステータスを確認するmysql> select * from performance_schema.replication_group_members; +---------------------------+---------------------------------------+-------------+-------------+--------------+--------------+----------------+ | CHANNEL_NAME | MEMBER_ID | MEMBER_HOST | MEMBER_PORT | MEMBER_STATE | MEMBER_ROLE | MEMBER_VERSION | +---------------------------+---------------------------------------+-------------+-------------+--------------+--------------+----------------+ | group_replication_applier | d955da6d-0048-11ea-b7b4-525400f4342d | bj-db-m1 | 3306 | オンライン | プライマリ | 8.0.18 | | group_replication_applier | e050c34f-0048-11ea-917d-52540021fab9 | bj-db-m3 | 3306 | オンライン | セカンダリ | 8.0.18 | | group_replication_applier | e6c56347-0048-11ea-9e8b-5254007c241f | bj-db-m2 | 3306 | オンライン | セカンダリ | 8.0.18 | +---------------------------+---------------------------------------+-------------+-------------+--------------+--------------+----------------+ セット内の 3 行 (0.00 秒) 14. 単一マスターから複数マスターへの切り替え ###################################################################### # シングルマスターからマルチマスターへの切り替え # MGR 切り替えモードではグループレプリケーションを再起動する必要があるため、最初にすべてのノードでグループレプリケーションをシャットダウンする必要があります。 #group_replication_single_primary_mode=OFF およびその他のパラメータを設定し、グループレプリケーションを開始します。 1) グループレプリケーションを停止します (すべての MGR ノードで実行)。 グループレプリケーションを停止します。 グローバル group_replication_single_primary_mode を OFF に設定します。 グローバル group_replication_enforce_update_everywhere_checks=ON を設定します。 2) 実行する MGR ノードを選択します (たとえば、ここでは MGR-node1 を選択します)。 グローバル group_replication_recovery_get_public_key=1 を設定します。 グローバル group_replication_bootstrap_group を ON に設定します。 GROUP_REPLICATIONを開始します。 グローバル group_replication_bootstrap_group を OFF に設定します。 3) 次に、他の MGR ノード (ここでは MGR-node2 と MGR-node3) で実行します。 グローバル group_replication_recovery_get_public_key=1 を設定します。 GROUP_REPLICATIONを開始します。 4) MGR グループ情報を表示する (どの MGR ノードでも表示できます) performance_schema.replication_group_members から * を選択します。 # すべての MGR ノードのステータスがオンライン、ロールが PRIMARY、MGR マルチマスター モードが正常に確立されていることがわかります。 ########################################################################## 15. 複数のマスターから単一のマスターへの切り替え ########################################################################## # マルチマスターモードからシングルマスターモードに戻す 1) グループレプリケーションを停止します (すべての MGR ノードで実行)。 グループレプリケーションを停止します。 グローバル group_replication_enforce_update_everywhere_checks=OFF を設定します。 グローバル group_replication_single_primary_mode を ON に設定します。 2) マスターノードとしてノードを選択し、マスターノード上で実行します(ここでは、MGR-node1 がマスターノードとして選択されています) グローバル group_replication_bootstrap_group を ON に設定します。 GROUP_REPLICATIONを開始します。 グローバル group_replication_bootstrap_group を OFF に設定します。 3) 残りのノード、つまりスレーブ ノードで実行します (ここでのスレーブ ノードは MGR-node2 と MGR-node3 を指します)。 GROUP_REPLICATIONを開始します。 4) MGR グループ情報を表示する (どの MGR ノードでも表示できます) performance_schema.replication_group_members から * を選択します。 ########################################################################## 16. 故障時の予防措置 # 障害予防策: # シングルマスターモードで、MGR-node1 ノードを復元します。復元後、ノードのグループレプリケーション機能を手動でアクティブ化する必要があります。# ノードに障害が発生した場合は、復元後に MGR クラスターに再参加する必要があります。正しい方法は次のとおりです。 GROUP_REPLICATIONを停止します。 GROUP_REPLICATIONを開始します。 # ノードがハングしても、他のノードは同期を続行します。 # 障害が発生したノードが復旧したら、ノードのグループレプリケーション機能を手動でアクティブ化するだけで済みます(「START GROUP_REPLICATION;」)。 # MGR グループ レプリケーション クラスターに通常どおり参加し、他のノードからのデータを自動的に同期できます。 # I/O レプリケーションで例外が発生した場合 # データが正しいことを確認した後 # マスター データベースの gtid を検索します mysql> show global variables like '%gtid%'; +------------------------------------------------+------------------------------------------------------+ | 変数名 | 値 | +------------------------------------------------+------------------------------------------------------+ | binlog_gtid_simple_recovery | オン | | 強制GTID一貫性 | オン | | グループレプリケーションgtid割り当てブロックサイズ | 1000000 | | gtid_executed | 58f6e65e-9309-11e9-9d88-525400184a0a:1-946050:1000003 | | gtid_executed_compression_period | 1000 | | gtid_mode | オン | | gtid_owned | | | gtid_purged | | | session_track_gtids | オフ | +------------------------------------------------+------------------------------------------------------+ セット内の行数 (0.00 秒) # 障害のあるスレーブの GROUP_REPLICATION を停止します。 マスターをリセットします。 グローバルgtid_purged='58f6e65e-9309-11e9-9d88-525400184a0a:1-946055:1000003'を設定します。 GROUP_REPLICATIONを開始します。 # ホワイトリストネットワークセグメントを追加します。stop group_replication; グローバル group_replication_ip_whitelist="127.0.0.1/32,172.16.60.0/24,172.16.50.0/24,172.16.51.0/24" を設定します。 グループレプリケーションを開始します。 「group_replication_ip_whitelist」のような変数を表示します。 # 注意: ホワイトリストを設定する前に、まずグループレプリケーションを無効にして、「stop group_replication;」を実行する必要があります。 要約する 以上がMySQL 8.0.18 mgr構築と切り替え機能についての編集者による紹介でした。皆様のお役に立てれば幸いです! 以下もご興味があるかもしれません:
|
>>: GoのDockerデプロイメント用の基本イメージ2つの実装
doctype もその 1 つです。 <!DOCTYPE HTML PUBLIC "...
<a> タグは主に、ハイパーリンクまたはアンカー リンクとも呼ばれるリンクとブックマーク...
プロキシを有効にする2つの方法React には、直接使用できるカプセル化された Ajax リクエスト...
MySQL はインストールが簡単で、高速で、豊富な機能を備えています。これはオープンソース運動のベン...
テーブルを美しくするために、行ごとに異なる境界線の色を設定できます。基本的な構文<TR 境界線...
目次歴史pushState() メソッドpushState() の使用シナリオreplaceStat...
この記事の例では、メモ帳の小さな機能を実現するためのvueの具体的なコードを参考までに共有しています...
1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...
目次1. コンポーネント化とは何ですか? 2. 基本的な使い方序文:場合によっては、HTML 構造化...
環境設定1: MySQLをインストールし、MySQLのbinディレクトリを環境変数に追加する環境設定...
目次1. 事前準備1.1 Node.jsをインストールする1.2 webpackをインストールする1...
[LeetCode] 182.重複メールPerson という名前のテーブル内のすべての重複メールを...
提案: コードをできるだけ手書きすると、学習の効率と深さを効果的に向上できます。デフォルトでは、&l...
目次フロントエンド上記のアイデアに従って、ページめくり機能を設計して記述します。バックエンド(Jav...
序文MySQL で show create table <tablename> コマンド...