主从数据库

主从数据库

1、概念

Linux中,数据库服务有三种:互为主主,互为主从,一主一从(主从数据库)

互为主主:数据库实时更新

互为主从:数据库达到一定的容量再更新

一主一从:主数据库可同步到从数据库,但从数据库不能同步到主数据库

软件包  mariadb mariadb-server
服务名 mariadb
协议名 mysql
端口号 3306

2、操作

主节点:(master)

#关防火墙和selinux(或配置规则)
[root@master ~]# systemctl stop firewalld
[root@master ~]# setenforce 0

#下载数据库软件包
[root@master ~]# yum -y install mariadb mariadb-server
......
Complete!

#启动数据库服务,并设置开机自启
[root@master ~]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

#初始化数据库
[root@master ~]# mysql_secure_installation 
Enter current password for root (enter for none):     #enter 默认为设置密码
OK, successfully used password, moving on...
Set root password? [Y/n] y       #y   设置密码
New password:         #数据库密码000000
Re-enter new password: 
Password updated successfully!
Remove anonymous users? [Y/n] y     #y  移除匿名用户
 ... Success!
Disallow root login remotely? [Y/n] n    #n  不允许root远程登录
 ... skipping. 
Remove test database and access to it? [Y/n] y    #y  移除测试数据库
 - Dropping test database...  
Reload privilege tables now? [Y/n] y    #y  重新加载数据库
 ... Success!
Thanks for using MariaDB! 

#修改配置文件
[root@master ~]# vi /etc/my.cnf
[mysqld]
log-bin = mysql-bin    #添加  设置为主数据库(也就是以二进制加载日志文件)
server-id = 1   # id号,不跟从数据库一样就行

#重启数据库
[root@master ~]# systemctl restart mariadb

#登录数据库、设置数据库权限
[root@master ~]# mysql -uroot -p000000
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by "000000";
Query OK, 0 rows affected (0.00 sec)     #给root用户一个远程登录的权限
MariaDB [(none)]> grant replication slave on *.* to 'zhangsan'@'192.168.130.23' identified by '000000';             #给zhangsan一个从节点复制权限
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> exit
Bye

从节点(slave):

#下载数据库软件包
[root@slave ~]# yum -y install mariadb mariadb-server
......
Complete!

#启动数据库服务,并设置开机自启
[root@slave ~]# systemctl enable --now mariadb
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.

#初始化数据库
[root@slave ~]# mysql_secure_installation 
Enter current password for root (enter for none):     #enter 默认为设置密码
OK, successfully used password, moving on...
Set root password? [Y/n] y       #y   设置密码
New password:         #数据库密码000000
Re-enter new password: 
Password updated successfully!
Remove anonymous users? [Y/n] y     #y  移除匿名用户
 ... Success!
Disallow root login remotely? [Y/n] n    #n  不允许root远程登录
 ... skipping. 
Remove test database and access to it? [Y/n] y    #y  移除测试数据库
 - Dropping test database...  
Reload privilege tables now? [Y/n] y    #y  重新加载数据库
 ... Success!
Thanks for using MariaDB! 

#修改配置文件
[root@slave ~]# vi /etc/my.cnf
[mysqld]
server-id = 2   #添加id号

#重启数据库
[root@slave ~]# systemctl restart mariadb

#进入数据库,授权
[root@slave ~]# mysql -uroot -p000000
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '000000';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> change master to   master_host='192.168.130.22',master_user='zhangsan',master_password='000000';
Query OK, 0 rows affected (0.032 sec)      #连接主数据库,用刚刚复制授权的用户和密码

MariaDB [(none)]> start slave;    #启动从节点
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> show slave status\G    #查看从数据库状态
......
                   Master_User: zhangsan
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000001
           Read_Master_Log_Pos: 541
                Relay_Log_File: mariadb-relay-bin.000002
                 Relay_Log_Pos: 840
         Relay_Master_Log_File: mysql-bin.000001
              Slave_IO_Running: Yes    #yes
             Slave_SQL_Running: Yes    #yes
             .......
MariaDB [(none)]> exit
Bye
posted @ 2023-04-02 16:24  想要新裤子  阅读(137)  评论(0编辑  收藏  举报