Mysql中怎么创建数据库并配置主从

博主:xiaoweixiaowei 2023-01-07 条评论

这篇文章将为大家详细讲解有关Mysql中怎么创建数据库并配置主从,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

1、主服务器上创建一个用于复制的账户。

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.101.3' IDENTIFILED BY 'Mysqlrepl';
 mysql> flush privileges;

2、主服务器参数修改

[root@localhost ~]# vi /usr/my.cnf
修改如下内容
server-id = 1
 log-bin=mysql-bin

3、主服务器备份数据,并传输

mysql>  flush tables with read lock;
 mysql> show master status;
 +——————+———-+————–+——————+——————-+
 | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
 +——————+———-+————–+——————+——————-+
 | mysql-bin.00002 |     120 |              |                  |                   |
 +——————+———-+————–+——————+——————-+
 1 row in set (0.00 sec)

[root@localhost ~]# mysqldump -uroot -p –all-databases | gzip > export_t.sql.gz
 [root@localhost ~]# scp export_t.sql.gz root@192.168.101.3:/tmp/

mysql> unlock tables;

4、从服务器恢复数据

[root@localhost bin]# gunzip export_t.sql.gz
 [root@localhost bin]# mysql -uroot -p
 mysql> source /tmp/export_t.sql.gz;

5、修改从服务器配置

[root@localhost bin]# vi /usr/my.cnf
添加如下内容
server-id = 2
重启服务器
[root@localhost ~]# service mysql restar

6、从服务器设置主从配置

mysql> CHANGE MASTER TO
 -> MASTER_HOST='192.168.101.5',
 -> MASTER_USER='repl',  
 -> MASTER_PASSWORD='Mysqlrepl',
 -> MASTER_LOG_FILE='mysql-bin.00002',
 -> MASTER_PORT=3306,
 -> MASTER_LOG_POS=120;

 MASTER_HOST指的是主服务器的IP地址,
MASTER_USER指的是复制的账户
MASTER_PASSWORD指的是账户的密码
MASTER_PORT指的是主服务器端口
MASTER_LOG_FILE指的是bin-log的文件
MASTER_LOG_POS指的是日志文件位

7、从服务器启动slave线程

mysql> start slave;
 mysql> show processlist;
 +—-+————-+———–+——+———+——+—————————————————————————–+——————+———–+—————+
 | Id | User        | Host      | db   | Command | Time | State                                                                       | Info             | Rows_sent | Rows_examined |
 +—-+————-+———–+——+———+——+—————————————————————————–+——————+———–+—————+
 |  1 | system user |           | NULL | Connect |  714 | Slave has read all relay log; waiting for the slave I/O thread to update it | NULL             |         0 |             0 |
 |  2 | system user |           | NULL | Connect |  714 | Waiting for master to send event                                            | NULL             |         0 |             0 |
 |  4 | root        | localhost | NULL | Query   |    0 | init                                                                        | show processlist |         0 |             0 |
 +—-+————-+———–+——+———+——+—————————————————————————–+——————+———–+—————+
 3 rows in set (0.08 sec)

这已经表明主从已经搭建成功。

8、测试

主服务器中

mysql> use test
 Database changed
 mysql> select * from aaa;
 +——+——+
 | a    | b    |
 +——+——+
 |    1 |    2 |
 |    1 |    2 |
 |    1 |    2 |
 |    2 |    3 |
 |    2 |    7 |
 +——+——+
 5 rows in set (0.06 sec)

从服务器中

mysql>  use test;
 Database changed
 mysql> select * from aaa;
 +——+——+
 | a    | b    |
 +——+——+
 |    1 |    2 |
 |    1 |    2 |
 |    1 |    2 |
 |    2 |    3 |
 |    2 |    7 |
 +——+——+
 5 rows in set (0.21 sec)

主服务器中

mysql> insert into aaa values (5,7),(56,21);
 Query OK, 2 rows affected (0.21 sec)
 Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from aaa;
 +——+——+
 | a    | b    |
 +——+——+
 |    1 |    2 |
 |    1 |    2 |
 |    1 |    2 |
 |    2 |    3 |
 |    2 |    7 |
 |    5 |    7 |
 |   56 |   21 |
 +——+——+
 7 rows in set (0.00 sec)

从服务器中

mysql> select * from aaa;
 +——+——+
 | a    | b    |
 +——+——+
 |    1 |    2 |
 |    1 |    2 |
 |    1 |    2 |
 |    2 |    3 |
 |    2 |    7 |
 |    5 |    7 |
 |   56 |   21 |
 +——+——+
 7 rows in set (0.00 sec)

9、管理主从

查看从服务器状态

mysql> show slave status G;
 *************************** 1. row ***************************
                Slave_IO_State: Waiting for master to send event
                   Master_Host: 192.168.101.5
                   Master_User: repl
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.00002
           Read_Master_Log_Pos: 120
                Relay_Log_File: localhost-relay-bin.000001
                 Relay_Log_Pos: 283
         Relay_Master_Log_File: mysql-bin.000036
              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: 120
               Relay_Log_Space: 460
               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: 1
                   Master_UUID: 86d34969-fa5d-11e6-b372-000c29c88c3f
              Master_Info_File: /usr/master.info
                     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
            Master_Retry_Count: 86400
                   Master_Bind:
       Last_IO_Error_Timestamp:
      Last_SQL_Error_Timestamp:
                Master_SSL_Crl:
            Master_SSL_Crlpath:
            Retrieved_Gtid_Set:
             Executed_Gtid_Set:
                 Auto_Position: 0
 1 row in set (0.00 sec)

关心的两个信息是Slave_IO_Running和Slave_SQL_Running是否是YES。Slave_IO_Running是从主服务器读取BINLOG日志,并写入到从服务器的中继日志中;Slave_SQL_Running负责读取和执行中继日志信息。

注意:如果需要从服务器禁止写入操作,则需要更改参数read-only,使从服务器非root账户只能读数据。

关于Mysql中怎么创建数据库并配置主从就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

The End

发布于:2023-01-07,除非注明,否则均为 主机评测原创文章,转载请注明出处。