MySQL数据库主从配置遇到的问题

事情的起因是这样的,我在学习MySQL数据库主从配置的时候,完成基本的配置文件设置:

# 主库的 /etc/my.cnf 添加以下内容
# 服务的唯一编号
server-id = 1

# 开启mysql binlog功能
log-bin = mysql-bin

# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW

# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal

# 指定需要复制的数据库名为looking
binlog-do-db = looking
# 从库的 /etc/my.cnf 添加以下内容
# 服务的唯一编号
server-id = 2

# 开启mysql binlog功能
log-bin = mysql-bin

# binlog记录内容的方式,记录被操作的每一行
binlog_format = ROW

# 减少记录日志的内容,只记录受影响的列
binlog_row_image = minimal

# 指定需要复制的数据库名为looking
replicate-do-db = looking

然后先在192.168.128.139主机上用root登入数据库,接着按照下面进行操作(我主库IP:192.168.128.139,从库IP:192.168.128.138):

# 主库操作
mysql> create user 'looking'@'192.168.128.138' identified by '12345678';
Query OK, 0 rows affected (0.01 sec)

mysql> grant replication slave on *.* to 'looking'@'192.168.128.138' identified by '12345678';
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> select user, host from mysql.user;
+---------------+-----------------+
| user          | host            |
+---------------+-----------------+
| looking       | 192.168.128.138 |
| mysql.session | localhost       |
| mysql.sys     | localhost       |
| root          | localhost       |
+---------------+-----------------+
4 rows in set (0.00 sec)

mysql> flush privileges;
mysql> show master status\G;
*************************** 1. row ***************************
             File: mysql-bin.000001
         Position: 4392
     Binlog_Do_DB: looking
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 
1 row in set (0.00 sec)

ERROR: 
No query specified

mysql> 

接着准备在从库上 (192.168.128.138)进行登录,结果报了下面这个错:

# 从库操作
[root@192 etc]# mysql -ulooking -h 192.168.128.139 -p
Enter password: 
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.128.139' (113)

我一看,账号和密码也都对着,主机IP也都对着,怎么会连不上呢?错误提示是无法连接,这样的话看起来应该和密码啥的没太大关系,一般密码错误的话大概率会报错拒绝访问Access denied。然后看到有一篇文章上说要远程连接数据库的话,需要关闭防火墙或者开放3306端口(很重要),于是一试,确实可以成功登陆上了:

# 主库操作
[root@192 mysql]# systemctl stop firewalld
[root@192 mysql]# 
or
[root@192 mysql]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

################# iptables -I INPUT -p tcp --dport 80 -j ACCEPT  设置运行访问80端口
# 从库操作
[root@192 etc]# mysql -ulooking -h 192.168.128.139 -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 18
Server version: 5.7.26-log MySQL Community Server (GPL)

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

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> 

 

因为我的从库是从主库clone过来的,所以还会报UUID相同的错误,不过只要修改一下auto.cnf文件就好了。

那这个文件在什么路径呢,听我娓娓道来。在 /etc/my.cnf 里边有一个 参数配置:

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

然后 cd 到 datadir 对应的路径,这里是:cd /var/lib/mysql,切换过去以后,就可以在目录下看到我们要找的文件啦。

# 从库操作
[root@192 mysql]# ll
total 122984
-rw-r-----. 1 mysql mysql      205 Apr 10 16:36 192-relay-bin.000001
-rw-r-----. 1 mysql mysql      320 Apr 10 16:36 192-relay-bin.000002
-rw-r-----. 1 mysql mysql       46 Apr 10 16:36 192-relay-bin.index
-rw-r-----. 1 mysql mysql       56 Apr 10 16:31 auto.cnf
-rw-------. 1 mysql mysql     1679 Jul 17  2019 ca-key.pem


[root@master mysql]# cat auto.cnf 
[auto]
server-uuid=93733866-a87b-11e9-8795-000c2915b0b5

然后从库重新配置一下,就可以得到两个梦寐以求的Yes了,之后在主库的修改,就会被同步到从库来:

# 从库操作
mysql> change master to master_host='192.168.128.139',master_user='looking',master_password='12345678',master_log_file='mysql-bin.000001',master_log_pos=4392;
Query OK, 0 rows affected, 2 warnings (0.02 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.128.139
                  Master_User: looking
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 4392
               Relay_Log_File: 192-relay-bin.000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: looking

要想用looking账户登录查看数据表的变更等,需要在主库使用root对'looking'@'192.168.128.138'的一些基本操作进行授权,然后就可以切换数据库,查看数据表了:

# 主库操作
mysql> grant select, insert, update on looking.* to 'looking'@'192.168.128.138';
Query OK, 0 rows affected (0.01 sec)

当然,因为开启了日志记录功能,所以如果操作的次数越多,目录文件下的日志块也就越多(主从库都一样):

[root@master audio_recognition]# cd /var/lib/mysql
[root@master mysql]# ll
total 123020
-rw-r-----. 1 mysql mysql       56 Jul 17  2019 auto.cnf
-rw-------. 1 mysql mysql     1679 Jul 17  2019 ca-key.pem
-rw-r--r--. 1 mysql mysql     1107 Jul 17  2019 ca.pem
-rw-r--r--. 1 mysql mysql     1107 Jul 17  2019 client-cert.pem
-rw-------. 1 mysql mysql     1675 Jul 17  2019 client-key.pem
-rw-r-----. 1 mysql mysql      311 Apr 23 09:58 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Apr 23 16:02 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Apr 23 16:02 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Jul 17  2019 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 Apr 23 15:58 ibtmp1
drwxr-x---. 2 mysql mysql      228 Apr 23 16:02 looking
-rw-r-----. 1 mysql mysql       98 Apr 23 16:07 master.info
-rw-r-----. 1 mysql mysql      154 Apr 23 16:07 master-relay-bin.000001
-rw-r-----. 1 mysql mysql       26 Apr 23 16:07 master-relay-bin.index
drwxr-x---. 2 mysql mysql     4096 Jul 17  2019 mysql
-rw-r-----. 1 mysql mysql      154 Apr 23 16:16 mysql-bin.000001
-rw-r-----. 1 mysql mysql     6986 Apr 11 12:31 mysql-bin.000001
-rw-r-----. 1 mysql mysql      154 Apr 15 16:37 mysql-bin.000002
-rw-r-----. 1 mysql mysql      154 Apr 17 16:08 mysql-bin.000003
-rw-r-----. 1 mysql mysql      154 Apr 17 17:48 mysql-bin.000004
-rw-r-----. 1 mysql mysql      154 Apr 21 09:31 mysql-bin.000005
-rw-r-----. 1 mysql mysql      177 Apr 21 09:31 mysql-bin.000006
-rw-r-----. 1 mysql mysql      154 Apr 22 11:27 mysql-bin.000007
-rw-r-----. 1 mysql mysql      154 Apr 23 09:58 mysql-bin.000008
-rw-r-----. 1 mysql mysql      177 Apr 23 09:58 mysql-bin.000009
-rw-r-----. 1 mysql mysql       19 Apr 23 16:16 mysql-bin.index
srwxrwxrwx. 1 mysql mysql        0 Apr 23 09:58 mysql.sock
-rw-------. 1 mysql mysql        5 Apr 23 09:58 mysql.sock.lock
drwxr-x---. 2 mysql mysql     8192 Jul 17  2019 performance_schema
-rw-------. 1 mysql mysql     1675 Jul 17  2019 private_key.pem
-rw-r--r--. 1 mysql mysql      451 Jul 17  2019 public_key.pem
-rw-r-----. 1 mysql mysql       59 Apr 23 16:07 relay-log.info
-rw-r--r--. 1 mysql mysql     1107 Jul 17  2019 server-cert.pem
-rw-------. 1 mysql mysql     1679 Jul 17  2019 server-key.pem
drwxr-x---. 2 mysql mysql     8192 Jul 17  2019 sys
drwxr-x---. 2 mysql mysql       20 Apr 10 17:53 test_db
drwxr-x---. 2 mysql mysql     4096 Apr 23 15:03 WAIHU

可以在执行 reset master命令清除日志文件:

mysql> reset master;
Query OK, 0 rows affected (0.01 sec)

[root@master mysql]# ll
total 122980
-rw-r-----. 1 mysql mysql       56 Jul 17  2019 auto.cnf
-rw-------. 1 mysql mysql     1679 Jul 17  2019 ca-key.pem
-rw-r--r--. 1 mysql mysql     1107 Jul 17  2019 ca.pem
-rw-r--r--. 1 mysql mysql     1107 Jul 17  2019 client-cert.pem
-rw-------. 1 mysql mysql     1675 Jul 17  2019 client-key.pem
-rw-r-----. 1 mysql mysql      311 Apr 23 09:58 ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 Apr 23 16:02 ibdata1
-rw-r-----. 1 mysql mysql 50331648 Apr 23 16:02 ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 Jul 17  2019 ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 Apr 23 15:58 ibtmp1
drwxr-x---. 2 mysql mysql      228 Apr 23 16:02 looking
-rw-r-----. 1 mysql mysql       98 Apr 23 16:07 master.info
-rw-r-----. 1 mysql mysql      154 Apr 23 16:07 master-relay-bin.000001
-rw-r-----. 1 mysql mysql       26 Apr 23 16:07 master-relay-bin.index
drwxr-x---. 2 mysql mysql     4096 Jul 17  2019 mysql
-rw-r-----. 1 mysql mysql      154 Apr 23 16:16 mysql-bin.000001
-rw-r-----. 1 mysql mysql       19 Apr 23 16:16 mysql-bin.index
srwxrwxrwx. 1 mysql mysql        0 Apr 23 09:58 mysql.sock
-rw-------. 1 mysql mysql        5 Apr 23 09:58 mysql.sock.lock
drwxr-x---. 2 mysql mysql     8192 Jul 17  2019 performance_schema
-rw-------. 1 mysql mysql     1675 Jul 17  2019 private_key.pem
-rw-r--r--. 1 mysql mysql      451 Jul 17  2019 public_key.pem
-rw-r-----. 1 mysql mysql       59 Apr 23 16:07 relay-log.info
-rw-r--r--. 1 mysql mysql     1107 Jul 17  2019 server-cert.pem
-rw-------. 1 mysql mysql     1679 Jul 17  2019 server-key.pem
drwxr-x---. 2 mysql mysql     8192 Jul 17  2019 sys
drwxr-x---. 2 mysql mysql       20 Apr 10 17:53 test_db
drwxr-x---. 2 mysql mysql     4096 Apr 23 15:03 WAIHU

 

你可能感兴趣的:(MySQL)