zoukankan      html  css  js  c++  java
  • percona-mysql8.0.16使用xtrabackup工具做基于gtid方式的主从同步

    mysql8.0.16使用xtrabackup工具做基于gtid方式的主从同步

    安装mysql的脚本:/usr/local/mysql/bin/mysqld --defaults-file=/usr/local/mysql/etc/my.cnf --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql_data

    1.将主数据库备份出来
    # 备份
    /usr/local/xtrabackup/bin/xtrabackup --defaults-file=/etc/my.cnf --user=root --password='pass' --host=localhost --port=3306 -S /tmp/mysql.sock --parallel=4 --backup --apply-log-only --target-dir=/data/dbback/
    # 应用log
    /usr/local/xtrabackup/bin/xtrabackup --defaults-file=/etc/my.cnf --user=root --password='pass' --prepare --apply-log-only --target-dir=/data/dbback/

    # 数据库的信息
    [root@eus-image-design-mongo02:/data]# cat dbbak02/xtrabackup_info
    uuid = 62bdb9f8-d704-11ea-bed8-00163e007133
    name =
    tool_name = xtrabackup
    tool_command = --defaults-file=/etc/my.cnf --user=root --password=... --host=localhost --port=3306 -S /tmp/mysql.sock --parallel=4 --backup --apply-log-only --target-dir=/data/dbback/
    tool_version = 8.0.7
    ibbackup_version = 8.0.7
    server_version = 8.0.18-9
    start_time = 2020-08-05 18:13:47
    end_time = 2020-08-05 18:14:02
    lock_time = 0
    binlog_pos = filename 'mysql-bin.000006', position '195', GTID of the last change '25e2bddf-d6fb-11ea-87ba-00163e007133:1-48'
    innodb_from_lsn = 0
    innodb_to_lsn = 20614586
    partial = N
    incremental = N
    format = file
    compressed = N
    encrypted = N

    2.拷贝备份出来的数据并恢复到从库中
    # rsync 同步到从库服务器中
    rsync -zavP --password-file="/data/www/.rsync/rsyncd.db" /data/dbback/ apache@172.30.0.108::apache/data/dbbak02/

    # 删除从库的
    # rm -rf /data/mysql_data/*
    # chown -R mysql.mysql /data/mysql_data

    # 从库中操作,还原为从库
    /usr/local/xtrabackup/bin/xtrabackup --defaults-file=/etc/my.cnf --copy-back --rsync --target-dir=/data/dbbak02/


    # 从库设置hosts
    # eus_online_image_design db
    172.30.0.109            eus.online_image.master.prod.mysql
    172.30.0.108            eus.online_image.slave01.prod.mysql



    # 在主库创建复制用户
    CREATE USER 'rep'@'%' IDENTIFIED WITH mysql_native_password BY 'wsdb123';
    grant replication slave on *.* to 'rep'@'%';

    # 从库设置主从复制
    change master to master_host='eus.online_image.master.prod.mysql',master_port=3306,master_user='rep',master_password='wsdb123',master_auto_position=1;
    # 启动主从同步
    start slave;


    主库配置:

    [root@eus-image-design-mongo01:/data]# cat /etc/my.cnf
    ## 配置文件模板,需要根据机器配置进行适当的调整
    ## my.cnf for MySQL 5.7/8.0
    ## 本配置文件主要适用于MySQL 5.7/8.0版本
    #
    [client]
    port                                                    = 3306
    socket                                                  = /tmp/mysql.sock
    ssl-mode=DISABLED
    [mysql]
    prompt                                                  = "u@eus-NewWSID R:m:s [d]> "
    no-auto-rehash
    
    [mysqld]
    user                                                    = mysql
    port                                                    = 3306
    basedir                                                 = /usr/local/mysql
    datadir                                                 = /data/mysql_data
    socket                                                  = /tmp/mysql.sock
    mysqlx_socket                                           = /tmp/mysqlx.sock
    pid-file                                                = /data/mysql_data/mysql.pid
    character-set-server                                    = utf8mb4
    skip_name_resolve                                       = 1
    
    
    mysqlx_port                                             = 33060
    admin_port                                              = 33062
    admin_address                                           = 127.0.0.1
    
    #设置默认时区
    #default_time_zone = "+8:00"
    collation-server                                        = utf8mb4_unicode_ci
    default_authentication_plugin                           = mysql_native_password
    skip-character-set-client-handshake
    
    #设置auto_increment_increment自增步长为10,设置auto_increment_offset自增开始数字为1
    # ID =  auto_increment_offset + N × auto_increment_increment
    # 1 11 21 31 41
    auto_increment_offset= 1
    auto_increment_increment= 10
    
    # 让MYSQL大小写敏感(1-不敏感,0-敏感)
    lower_case_table_names                                  = 1
    
    sql_mode                                                = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    
    open_files_limit                                        = 65535
    back_log                                                = 1024
    max_connections                                         = 1000
    max_connect_errors                                      = 1000000
    table_open_cache                                        = 1024
    table_definition_cache                                  = 1024
    table_open_cache_instances                              = 64
    thread_stack                                            = 512K
    external-locking                                        = FALSE
    max_allowed_packet                                      = 512M
    sort_buffer_size                                        = 4M
    join_buffer_size                                        = 4M
    thread_cache_size                                       = 1500
    interactive_timeout                                     = 240
    wait_timeout                                            = 240
    tmp_table_size                                          = 32M
    max_heap_table_size                                     = 128M
    slow_query_log                                          = 1
    log_timestamps                                          = SYSTEM
    slow_query_log_file                                     = /data/mysql_data/slow.log
    log-error                                               = /data/mysql_data/error.log
    long_query_time                                         = 2.5
    log_queries_not_using_indexes                           = 1
    log_throttle_queries_not_using_indexes                  = 60
    min_examined_row_limit                                  = 100
    log_slow_admin_statements                               = 1
    log_slow_slave_statements                               = 1
    server-id                                               = 229
    #log-bin的文件名称采用前缀mysql-bin.XXX
    log-bin                                                 = mysql-bin
    sync_binlog                                             = 1
    binlog_cache_size                                       = 4M
    max_binlog_cache_size                                   = 2G
    max_binlog_size                                         = 1G
    
    #注意:MySQL 8.0开始,binlog_expire_logs_seconds选项也存在的话,会忽略expire_logs_days选项,索性这里注释
    #binlog_expire_logs_seconds                             = 50
    
    master_info_repository                                  = TABLE
    relay_log_info_repository                               = TABLE
    gtid_mode                                               = on
    enforce_gtid_consistency                                = 1
    log_slave_updates
    
    #自定义 
    relay-log                                               = mysql-relay-bin
    relay-log-index                                         = relay.index
    
    ##并发复制
    slave-parallel-type                                     = LOGICAL_CLOCK
    slave-parallel-workers                                  = 0
    master_info_repository                                  = TABLE
    relay_log_info_repository                               = TABLE
    
    #------------------------------replicate--------------#
    ##排除不需要同步的库表
    #replicate-ignore-db                                        = mysql
    #replicate-ignore-db                                        = sys
    replicate-ignore-db                                         = information_schema
    replicate-ignore-db                                         = performance_schema
    replicate-ignore-db                                         = undolog
    replicate-ignore-db                                         = for_nagios
    replicate-ignore-db                                         = undolog
    
    #replicate_wild_ignore_table                                = mysql.%
    #replicate_wild_ignore_table                                = sys.%
    replicate_wild_ignore_table                                 = information_schema.%
    replicate_wild_ignore_table                                 = performance_schema.%
    replicate_wild_ignore_table                                 = undolog.%
    replicate_wild_ignore_table                                 = for_nagios.%
    replicate_wild_ignore_table                                 = undolog.%
    
    ##跳过slave进程启动参数
    #skip-slave-start
    
    ##如果实例为从库,则需要设置为on
    #read_only                                               = on
    #super_read_only                                         = on
    
    slave-rows-search-algorithms                            = 'INDEX_SCAN,HASH_SCAN'
    binlog_format                                           = row
    binlog_checksum                                         = 1
    relay_log_recovery                                      = 1
    relay-log-purge                                         = 1
    key_buffer_size                                         = 32M
    read_buffer_size                                        = 8M
    read_rnd_buffer_size                                    = 4M
    bulk_insert_buffer_size                                 = 64M
    
    #----------------Myisam--------------------------------#
    myisam_sort_buffer_size                                 = 128M
    myisam_max_sort_file_size                               = 512M
    myisam_repair_threads                                   = 1
    lock_wait_timeout                                       = 120
    explicit_defaults_for_timestamp                         = 1
    innodb_thread_concurrency                               = 0
    innodb_sync_spin_loops                                  = 100
    innodb_spin_wait_delay                                  = 30
    
    transaction_isolation                                   = REPEATABLE-READ
    #innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size                                 = 4G
    innodb_buffer_pool_instances                            = 4
    innodb_buffer_pool_load_at_startup                      = 1
    innodb_buffer_pool_dump_at_shutdown                     = 1
    innodb_data_file_path                                   = ibdata1:1G;ibdata2:1G:autoextend
    innodb_log_group_home_dir                               = /data/mysql_data
    innodb_flush_log_at_trx_commit                          = 1
    innodb_log_buffer_size                                  = 128M
    innodb_log_file_size                                    = 2G
    innodb_log_files_in_group                               = 2
    innodb_max_undo_log_size                                = 4G
    innodb_undo_directory                                   = /data/mysql_data/undolog
    #The setting INNODB_UNDO_TABLESPACES is deprecated and is no longer used If you need more, please use CREATE UNDO TABLESPACE
    #innodb_undo_tablespaces = 95
    #innodb_undo_tablespaces = 3
    
    # 根据您的服务器IOPS能力适当调整
    # 一般配普通SSD盘的话,可以调整到 10000 - 20000
    # 配置高端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                        = 8G
    innodb_stats_on_metadata                                = 0
    
    #注意:MySQL 8.0.16开始删除该选项
    #internal_tmp_disk_storage_engine = InnoDB
    
    # some var for MySQL 8
    log_error_verbosity                                     = 3
    innodb_print_ddl_logs                                   = 1
    
    #若在启动时binlog_expire_logs_seconds和expire_logs_days参数都设置为非0值,则使用binlog_expire_logs_seconds值,expire_logs_days值则失效并对其发出告警信息。
    #若在MySQL启动时inlog_expire_logs_seconds和expire_logs_days 都没设置值,则使用默认值的 binlog_expire_logs_seconds值
    binlog_expire_logs_seconds                              = 2592000
    #innodb_dedicated_server = 0
    
    innodb_status_file                                      = 1
    #注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快
    innodb_status_output                                    = 0
    innodb_status_output_locks                              = 0
    
    #performance_schema
    performance_schema                                      = 1
    performance_schema_instrument                           = '%memory%=on'
    performance_schema_instrument                           = '%lock%=on'
    
    #innodb monitor
    innodb_monitor_enable                                   = "module_innodb"
    innodb_monitor_enable                                   = "module_server"
    innodb_monitor_enable                                   = "module_dml"
    innodb_monitor_enable                                   = "module_ddl"
    innodb_monitor_enable                                   = "module_trx"
    innodb_monitor_enable                                   = "module_os"
    innodb_monitor_enable                                   = "module_purge"
    innodb_monitor_enable                                   = "module_log"
    innodb_monitor_enable                                   = "module_lock"
    innodb_monitor_enable                                   = "module_buffer"
    innodb_monitor_enable                                   = "module_index"
    innodb_monitor_enable                                   = "module_ibuf_system"
    innodb_monitor_enable                                   = "module_buffer_page"
    innodb_monitor_enable                                   = "module_adaptive_hash"
    
    
    [mysqld_safe]
    #控制文件打开数的show global status like 'open%file%';比较合适的设置:Open_files / open_files_limit * 100% <= 75%
    open-files-limit                                            = 65535
    log-error                                                   = /data/mysql_data/error.log
    
    
    
    
    [mysqldump]
    quick
    max_allowed_packet                                      = 512M

    # 从库配置

    [root@eus-image-design-mongo02:~]# cat /etc/my.cnf
    ## 配置文件模板,需要根据机器配置进行适当的调整
    ## my.cnf for MySQL 5.7/8.0
    ## 本配置文件主要适用于MySQL 5.7/8.0版本
    #
    [client]
    port                                                    = 3306
    socket                                                  = /tmp/mysql.sock
    ssl-mode=DISABLED
    [mysql]
    prompt                                                  = "u@eus-NewWSID R:m:s [d]> "
    no-auto-rehash
    
    [mysqld]
    user                                                    = mysql
    port                                                    = 3306
    basedir                                                 = /usr/local/mysql
    datadir                                                 = /data/mysql_data
    socket                                                  = /tmp/mysql.sock
    mysqlx_socket                                           = /tmp/mysqlx.sock
    pid-file                                                = /data/mysql_data/mysql.pid
    character-set-server                                    = utf8mb4
    skip_name_resolve                                       = 1
    
    
    mysqlx_port                                             = 33060
    admin_port                                              = 33062
    admin_address                                           = 127.0.0.1
    
    #设置默认时区
    #default_time_zone = "+8:00"
    collation-server                                        = utf8mb4_unicode_ci
    default_authentication_plugin                           = mysql_native_password
    skip-character-set-client-handshake
    
    #设置auto_increment_increment自增步长为10,设置auto_increment_offset自增开始数字为1
    # ID =  auto_increment_offset + N × auto_increment_increment
    # 1 11 21 31 41
    auto_increment_offset= 1
    auto_increment_increment= 10
    
    # 让MYSQL大小写敏感(1-不敏感,0-敏感)
    lower_case_table_names                                  = 1
    
    sql_mode                                                = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
    
    open_files_limit                                        = 65535
    back_log                                                = 1024
    max_connections                                         = 1000
    max_connect_errors                                      = 1000000
    table_open_cache                                        = 1024
    table_definition_cache                                  = 1024
    table_open_cache_instances                              = 64
    thread_stack                                            = 512K
    external-locking                                        = FALSE
    max_allowed_packet                                      = 512M
    sort_buffer_size                                        = 4M
    join_buffer_size                                        = 4M
    thread_cache_size                                       = 1500
    interactive_timeout                                     = 240
    wait_timeout                                            = 240
    tmp_table_size                                          = 32M
    max_heap_table_size                                     = 128M
    slow_query_log                                          = 1
    log_timestamps                                          = SYSTEM
    slow_query_log_file                                     = /data/mysql_data/slow.log
    log-error                                               = /data/mysql_data/error.log
    long_query_time                                         = 2.5
    log_queries_not_using_indexes                           = 1
    log_throttle_queries_not_using_indexes                  = 60
    min_examined_row_limit                                  = 100
    log_slow_admin_statements                               = 1
    log_slow_slave_statements                               = 1
    server-id                                               = 170
    #log-bin的文件名称采用前缀mysql-bin.XXX
    log-bin                                                 = mysql-bin
    sync_binlog                                             = 1
    binlog_cache_size                                       = 4M
    max_binlog_cache_size                                   = 2G
    max_binlog_size                                         = 1G
    
    #注意:MySQL 8.0开始,binlog_expire_logs_seconds选项也存在的话,会忽略expire_logs_days选项,索性这里注释
    #binlog_expire_logs_seconds                             = 50
    
    master_info_repository                                  = TABLE
    relay_log_info_repository                               = TABLE
    gtid_mode                                               = on
    enforce_gtid_consistency                                = 1
    log_slave_updates
    
    #自定义 
    relay-log                                               = mysql-relay-bin
    relay-log-index                                         = relay.index
    
    ##并发复制
    slave-parallel-type                                     = LOGICAL_CLOCK
    slave-parallel-workers                                  = 0
    master_info_repository                                  = TABLE
    relay_log_info_repository                               = TABLE
    
    #------------------------------replicate--------------#
    ##排除不需要同步的库表
    #replicate-ignore-db                                        = mysql
    #replicate-ignore-db                                        = sys
    replicate-ignore-db                                         = information_schema
    replicate-ignore-db                                         = performance_schema
    replicate-ignore-db                                         = undolog
    replicate-ignore-db                                         = for_nagios
    replicate-ignore-db                                         = undolog
    
    #replicate_wild_ignore_table                                = mysql.%
    #replicate_wild_ignore_table                                = sys.%
    replicate_wild_ignore_table                                 = information_schema.%
    replicate_wild_ignore_table                                 = performance_schema.%
    replicate_wild_ignore_table                                 = undolog.%
    replicate_wild_ignore_table                                 = for_nagios.%
    replicate_wild_ignore_table                                 = undolog.%
    
    ##跳过slave进程启动参数
    #skip-slave-start
    
    ##如果实例为从库,则需要设置为on
    read_only                                               = on
    super_read_only                                         = on
    
    slave-rows-search-algorithms                            = 'INDEX_SCAN,HASH_SCAN'
    binlog_format                                           = row
    binlog_checksum                                         = 1
    relay_log_recovery                                      = 1
    relay-log-purge                                         = 1
    key_buffer_size                                         = 32M
    read_buffer_size                                        = 8M
    read_rnd_buffer_size                                    = 4M
    bulk_insert_buffer_size                                 = 64M
    
    #----------------Myisam--------------------------------#
    myisam_sort_buffer_size                                 = 128M
    myisam_max_sort_file_size                               = 512M
    myisam_repair_threads                                   = 1
    lock_wait_timeout                                       = 120
    explicit_defaults_for_timestamp                         = 1
    innodb_thread_concurrency                               = 0
    innodb_sync_spin_loops                                  = 100
    innodb_spin_wait_delay                                  = 30
    
    transaction_isolation                                   = REPEATABLE-READ
    #innodb_additional_mem_pool_size = 16M
    innodb_buffer_pool_size                                 = 4G(可以适当调整:如8G)
    innodb_buffer_pool_instances                            = 4
    innodb_buffer_pool_load_at_startup                      = 1
    innodb_buffer_pool_dump_at_shutdown                     = 1
    innodb_data_file_path                                   = ibdata1:1G;ibdata2:1G:autoextend
    innodb_log_group_home_dir                               = /data/mysql_data
    innodb_flush_log_at_trx_commit                          = 1
    innodb_log_buffer_size                                  = 128M
    innodb_log_file_size                                    = 2G
    innodb_log_files_in_group                               = 2
    innodb_max_undo_log_size                                = 4G
    innodb_undo_directory                                   = /data/mysql_data/undolog
    #The setting INNODB_UNDO_TABLESPACES is deprecated and is no longer used If you need more, please use CREATE UNDO TABLESPACE
    #innodb_undo_tablespaces = 95
    #innodb_undo_tablespaces = 3
    
    # 根据您的服务器IOPS能力适当调整
    # 一般配普通SSD盘的话,可以调整到 10000 - 20000
    # 配置高端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                        = 8G
    innodb_stats_on_metadata                                = 0
    
    #注意:MySQL 8.0.16开始删除该选项
    #internal_tmp_disk_storage_engine = InnoDB
    
    # some var for MySQL 8
    log_error_verbosity                                     = 3
    innodb_print_ddl_logs                                   = 1
    
    #若在启动时binlog_expire_logs_seconds和expire_logs_days参数都设置为非0值,则使用binlog_expire_logs_seconds值,expire_logs_days值则失效并对其发出告警信息。
    #若在MySQL启动时inlog_expire_logs_seconds和expire_logs_days 都没设置值,则使用默认值的 binlog_expire_logs_seconds值
    binlog_expire_logs_seconds                              = 2592000
    #innodb_dedicated_server = 0
    
    innodb_status_file                                      = 1
    #注意: 开启 innodb_status_output & innodb_status_output_locks 后, 可能会导致log-error文件增长较快
    innodb_status_output                                    = 0
    innodb_status_output_locks                              = 0
    
    #performance_schema
    performance_schema                                      = 1
    performance_schema_instrument                           = '%memory%=on'
    performance_schema_instrument                           = '%lock%=on'
    
    #innodb monitor
    innodb_monitor_enable                                   = "module_innodb"
    innodb_monitor_enable                                   = "module_server"
    innodb_monitor_enable                                   = "module_dml"
    innodb_monitor_enable                                   = "module_ddl"
    innodb_monitor_enable                                   = "module_trx"
    innodb_monitor_enable                                   = "module_os"
    innodb_monitor_enable                                   = "module_purge"
    innodb_monitor_enable                                   = "module_log"
    innodb_monitor_enable                                   = "module_lock"
    innodb_monitor_enable                                   = "module_buffer"
    innodb_monitor_enable                                   = "module_index"
    innodb_monitor_enable                                   = "module_ibuf_system"
    innodb_monitor_enable                                   = "module_buffer_page"
    innodb_monitor_enable                                   = "module_adaptive_hash"
    
    
    [mysqld_safe]
    #控制文件打开数的show global status like 'open%file%';比较合适的设置:Open_files / open_files_limit * 100% <= 75%
    open-files-limit                                            = 65535
    log-error                                                   = /data/mysql_data/error.log
    
    
    
    
    [mysqldump]
    quick
    max_allowed_packet                                      = 512M
  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/reblue520/p/13442141.html
Copyright © 2011-2022 走看看