mysql主从

时间:2021-10-11
本文章向大家介绍mysql主从,主要包括mysql主从使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

mysql主从

主从安装mariadb
[root@master ~]# yum -y install mariadb*
[root@slave ~]# yum -y install mariadb*

zabbix服务启动
[root@zabbix ~]# zabbix_server 
[root@zabbix ~]# zabbix_agentd 
[root@zabbix ~]# ss -antl
State    Recv-Q     Send-Q          Local Address:Port          Peer Address:Port    
LISTEN   0          32              192.168.122.1:53                 0.0.0.0:*       
LISTEN   0          128                   0.0.0.0:22                 0.0.0.0:*       
LISTEN   0          5                   127.0.0.1:631                0.0.0.0:*       
LISTEN   0          128                   0.0.0.0:10050              0.0.0.0:*       
LISTEN   0          128                   0.0.0.0:10051              0.0.0.0:*       
LISTEN   0          128                 127.0.0.1:9000               0.0.0.0:*       
LISTEN   0          128                   0.0.0.0:111                0.0.0.0:*       
LISTEN   0          128                      [::]:22                    [::]:*       
LISTEN   0          5                       [::1]:631                   [::]:*       
LISTEN   0          80                          *:3306                     *:*       
LISTEN   0          128                      [::]:111                   [::]:*       
LISTEN   0          128                         *:80                       *:*     

主从开启mysql
[root@master ~]# systemctl start mariadb
[root@slave ~]# systemctl start mariadb

主从关闭防火墙
[root@master ~]# systemctl disable --now firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master ~]# setenforce 0
//从服务器已经关闭过

主服务器操作

主创建权限账户
[root@master ~]# mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.11-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> grant replication slave on *.* to 'repl'@'192.168.145.171' identified by 'repl123!';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> quit
Bye

进入此目录找到mysqld添加后两行
[root@master ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

server-id = 10
log-bin = mysql_bin

进入/var/lib/mysql/下查看是否添加mysql_bin 如果没有重启
[root@master ~]# ll /var/lib/mysql/
总用量 122936
-rw-rw----. 1 mysql mysql    16384 10月 11 02:45 aria_log.00000001
-rw-rw----. 1 mysql mysql       52 10月 11 02:45 aria_log_control
-rw-rw----. 1 mysql mysql      972 10月 11 02:45 ib_buffer_pool
-rw-rw----. 1 mysql mysql 12582912 10月 11 02:45 ibdata1
-rw-rw----. 1 mysql mysql 50331648 10月 11 02:45 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 10月 11 02:45 ib_logfile1
-rw-rw----. 1 mysql mysql 12582912 10月 11 02:45 ibtmp1
-rw-rw----. 1 mysql mysql        0 10月 11 02:45 multi-master.info
drwx------. 2 mysql mysql     4096 10月 11 02:45 mysql
srwxrwxrwx. 1 mysql mysql        0 10月 11 02:45 mysql.sock
-rw-rw----. 1 mysql mysql       16 10月 11 02:45 mysql_upgrade_info
drwx------. 2 mysql mysql       20 10月 11 02:45 performance_schema
-rw-rw----. 1 mysql mysql    24576 10月 11 02:45 tc.log
[root@master ~]# systemctl restart mariadb
[root@master ~]# ll /var/lib/mysql/
总用量 122920
-rw-rw----. 1 mysql mysql    16384 10月 11 02:55 aria_log.00000001
-rw-rw----. 1 mysql mysql       52 10月 11 02:55 aria_log_control
-rw-rw----. 1 mysql mysql      976 10月 11 02:55 ib_buffer_pool
-rw-rw----. 1 mysql mysql 12582912 10月 11 02:55 ibdata1
-rw-rw----. 1 mysql mysql 50331648 10月 11 02:55 ib_logfile0
-rw-rw----. 1 mysql mysql 50331648 10月 11 02:45 ib_logfile1
-rw-rw----. 1 mysql mysql 12582912 10月 11 02:55 ibtmp1
-rw-rw----. 1 mysql mysql        0 10月 11 02:45 multi-master.info
drwx------. 2 mysql mysql     4096 10月 11 02:45 mysql
-rw-rw----. 1 mysql mysql      328 10月 11 02:55 mysql_bin.000001
-rw-rw----. 1 mysql mysql       19 10月 11 02:55 mysql_bin.index
srwxrwxrwx. 1 mysql mysql        0 10月 11 02:55 mysql.sock
-rw-rw----. 1 mysql mysql       16 10月 11 02:45 mysql_upgrade_info
drwx------. 2 mysql mysql       20 10月 11 02:45 performance_schema

MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql_bin.000001 |      328 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.000 sec)

从库操作

修i该配置文件
[root@slave ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid

server-id = 20
relay-log = myrelay

MariaDB [(none)]> change master to
    -> master_host='192.168.145.169',
    -> master_user='repl',
    -> master_password='repl123!',
    -> master_log_file='mysql_bin.000002',
    -> master_log_pos=328;

MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.145.169
                   Master_User: repl
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql_bin.000002
           Read_Master_Log_Pos: 328
                Relay_Log_File: myrelay.000002
                 Relay_Log_Pos: 555
         Relay_Master_Log_File: mysql_bin.000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB: 
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 328
               Relay_Log_Space: 856
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: 0
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error: 
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 10
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
                    Using_Gtid: No
                   Gtid_IO_Pos: 
       Replicate_Do_Domain_Ids: 
   Replicate_Ignore_Domain_Ids: 
                 Parallel_Mode: conservative
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0
1 row in set (0.000 sec)
授权zabbix账户
MariaDB [(none)]> grant select on *.* to 'zabbix'@'localhost' identified by 'zabbix123!';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> grant super,replication client on *.* to 'zabbix'@'localhost' identified by 'zabbix123!';
Query OK, 0 rows affected (0.000 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

如果关闭slave执行脚本会显示1
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.001 sec)

[root@slave scripts]# ./check_replication.sh 
1

[root@slave ~]# vim /usr/local/etc/zabb


声音报警

mysql主从延迟

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.145.169
                   Master_User: repl
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql_bin.000002
           Read_Master_Log_Pos: 328
                Relay_Log_File: myrelay.000002
                 Relay_Log_Pos: 555
         Relay_Master_Log_File: mysql_bin.000002
              Slave_IO_Running: Yes
             Slave_SQL_Running: Yes
               Replicate_Do_DB: 
           Replicate_Ignore_DB: 
            Replicate_Do_Table: 
        Replicate_Ignore_Table: 
       Replicate_Wild_Do_Table: 
   Replicate_Wild_Ignore_Table: 
                    Last_Errno: 0
                    Last_Error: 
                  Skip_Counter: 0
           Exec_Master_Log_Pos: 328
               Relay_Log_Space: 856
               Until_Condition: None
                Until_Log_File: 
                 Until_Log_Pos: 0
            Master_SSL_Allowed: No
            Master_SSL_CA_File: 
            Master_SSL_CA_Path: 
               Master_SSL_Cert: 
             Master_SSL_Cipher: 
                Master_SSL_Key: 
         Seconds_Behind_Master: 0
 Master_SSL_Verify_Server_Cert: No
                 Last_IO_Errno: 0
                 Last_IO_Error: 
                Last_SQL_Errno: 0
                Last_SQL_Error: 
   Replicate_Ignore_Server_Ids: 
              Master_Server_Id: 10
                Master_SSL_Crl: 
            Master_SSL_Crlpath: 
                    Using_Gtid: No
                   Gtid_IO_Pos: 
       Replicate_Do_Domain_Ids: 
   Replicate_Ignore_Domain_Ids: 
                 Parallel_Mode: conservative
                     SQL_Delay: 0
           SQL_Remaining_Delay: NULL
       Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
              Slave_DDL_Groups: 0
Slave_Non_Transactional_Groups: 0
    Slave_Transactional_Groups: 0
1 row in set (0.000 sec)

[root@slave scripts]# chmod +x check_replication_delay.sh 
[root@slave scripts]# cat check_replication.sh 
#!/bin/bash
  
delay=$(mysql -uzabbix -p'zabbix123!' -e 'show slave status\G'|grep 'Behind'|awk '{print $2}')
if [ $delay != NULL ];then    
        echo $delay
else    
        echo '0'
fi      
[root@slave scripts]# ./check_replication_delay.sh 
0

//修改zabbix_agentd.conf配置文件
[root@slave ~]# vim /usr/local/etc/zabbix_agentd.conf
525 UserParameter=check_replication,/scripts/check_replication.sh
526 UserParameter=check_replication_delay,/scripts/check_replicatio    n_delay.sh
[root@slave ~]# pkill zabbix
[root@slave ~]# zabbix_agentd 
[root@zabbix ~]# zabbix_get -s 192.168.145.171 -k check_replication_delay
0


用户和组权限的设置

[root@zabbix ~]# mysql -uroot -pzs123!
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2461
Server version: 5.7.34 MySQL Community Server (GPL)

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| zabbix             |
+--------------------+
5 rows in set (0.01 sec)

mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+----------------------------+
| Tables_in_zabbix           |
+----------------------------+
| acknowledges               |
| actions                    |
| alerts                     |
| auditlog                   |
| auditlog_details           |
| autoreg_host               |
| conditions                 |
| config                     |
| config_autoreg_tls         |
| corr_condition             |
| corr_condition_group       |
| corr_condition_tag         |
| corr_condition_tagpair     |
| corr_condition_tagvalue    |
| corr_operation             |
| correlation                |
| dashboard                  |
| dashboard_page             |
| dashboard_user             |
| dashboard_usrgrp           |
| dbversion                  |
| dchecks                    |
| dhosts                     |
| drules                     |
| dservices                  |
| escalations                |
| event_recovery             |
| event_suppress             |
| event_tag                  |
| events                     |
| expressions                |
| functions                  |
| globalmacro                |
| globalvars                 |
| graph_discovery            |
| graph_theme                |
| graphs                     |
| graphs_items               |
| group_discovery            |
| group_prototype            |
| history                    |
| history_log                |
| history_str                |
| history_text               |
| history_uint               |
| host_discovery             |
| host_inventory             |
| host_tag                   |
| hostmacro                  |
| hosts                      |
| hosts_groups               |
| hosts_templates            |
| housekeeper                |
| hstgrp                     |
| httpstep                   |
| httpstep_field             |
| httpstepitem               |
| httptest                   |
| httptest_field             |
| httptest_tag               |
| httptestitem               |
| icon_map                   |
| icon_mapping               |
| ids                        |
| images                     |
| interface                  |
| interface_discovery        |
| interface_snmp             |
| item_condition             |
| item_discovery             |
| item_parameter             |
| item_preproc               |
| item_rtdata                |
| item_tag                   |
| items                      |
| lld_macro_path             |
| lld_override               |
| lld_override_condition     |
| lld_override_opdiscover    |
| lld_override_operation     |
| lld_override_ophistory     |
| lld_override_opinventory   |
| lld_override_opperiod      |
| lld_override_opseverity    |
| lld_override_opstatus      |
| lld_override_optag         |
| lld_override_optemplate    |
| lld_override_optrends      |
| maintenance_tag            |
| maintenances               |
| maintenances_groups        |
| maintenances_hosts         |
| maintenances_windows       |
| media                      |
| media_type                 |
| media_type_message         |
| media_type_param           |
| module                     |
| opcommand                  |
| opcommand_grp              |
| opcommand_hst              |
| opconditions               |
| operations                 |
| opgroup                    |
| opinventory                |
| opmessage                  |
| opmessage_grp              |
| opmessage_usr              |
| optemplate                 |
| problem                    |
| problem_tag                |
| profiles                   |
| proxy_autoreg_host         |
| proxy_dhistory             |
| proxy_history              |
| regexps                    |
| report                     |
| report_param               |
| report_user                |
| report_usrgrp              |
| rights                     |
| role                       |
| role_rule                  |
| script_param               |
| scripts                    |
| service_alarms             |
| services                   |
| services_links             |
| services_times             |
| sessions                   |
| sysmap_element_trigger     |
| sysmap_element_url         |
| sysmap_shape               |
| sysmap_url                 |
| sysmap_user                |
| sysmap_usrgrp              |
| sysmaps                    |
| sysmaps_element_tag        |
| sysmaps_elements           |
| sysmaps_link_triggers      |
| sysmaps_links              |
| tag_filter                 |
| task                       |
| task_acknowledge           |
| task_check_now             |
| task_close_problem         |
| task_data                  |
| task_remote_command        |
| task_remote_command_result |
| task_result                |
| timeperiods                |
| token                      |
| trends                     |
| trends_uint                |
| trigger_depends            |
| trigger_discovery          |
| trigger_queue              |
| trigger_tag                |
| triggers                   |
| users                      |
| users_groups               |
| usrgrp                     |
| valuemap                   |
| valuemap_mapping           |
| widget                     |
| widget_field               |
+----------------------------+
166 rows in set (0.00 sec)

mysql> select * from users\G
*************************** 1. row ***************************
        userid: 1
      username: Admin
          name: Zabbix
       surname: Administrator
        passwd: $2y$10$92nDno4n0Zm7Ej7Jfsz8WukBfgSS/U0QkIuu8WkJPihXBb2A1UrEK
           url: 
     autologin: 1
    autologout: 0
          lang: default
       refresh: 30s
         theme: default
attempt_failed: 0
    attempt_ip: 
 attempt_clock: 0
 rows_per_page: 50
      timezone: default
        roleid: 3
*************************** 2. row ***************************
        userid: 2
      username: guest
          name: 
       surname: 
        passwd: $2y$10$89otZrRNmde97rIyzclecuk6LwKAsHN0BcvoOKGjbT.BwMBfm7G06
           url: 
     autologin: 0
    autologout: 15m
          lang: default
       refresh: 30s
         theme: default
attempt_failed: 0
    attempt_ip: 
 attempt_clock: 0
 rows_per_page: 50
      timezone: default
        roleid: 4
2 rows in set (0.00 sec)

mysql> 


原文地址:https://www.cnblogs.com/Aimmi/p/15391664.html