MySQL主从复制部署

1、安装MySQL,并关闭防火墙和selinux

这一步主服务器和从服务器都是要执行的。

[root@master ~]# yum -y install mariadb mariadb-server
[root@master ~]# systemctl start mariadb.service 
[root@master ~]# systemctl enable mariadb.service

//初始化数据库(一路回车即可)
[root@master ~]# mysql_secure_installation

//防火墙和selinux
[root@master ~]# systemctl stop firewalld.service 
[root@master ~]# systemctl disable firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@master ~]# sed -i s/SELINUX=enforing/SELINUX=disabled/g /etc/selinux/config 
[root@master ~]# setenforce 0

2、主服务器配置

如果主服务器和从服务器数据不一致则需要先备份主服务器上的数据,然后到从服务器恢复数据,然后在执行后面操作。
全备数据库

//主服务器
[root@master etc]# mysqldump -uroot -p123 --all-databases > /opt/all-2021.08.30.sql
[root@master etc]# ls /opt/all-2021.08.30.sql
/opt/all-2021.08.30.sql
//把全备文件传到从服务器进行恢复
[root@master etc]# scp /opt/all-2021.08.30.sql root@192.168.164.132:/root
all-2021.08.30.sql                 100%  467KB  45.0MB/s   00:00    
//从服务器恢复数据库
[root@slave ~]# mysql -uroot -p123 < /root/all-2021.08.30.sql
......
......
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wjm                |
| wjm1001            |
+--------------------+
5 rows in set (0.000 sec)
//恢复成功

在主服务器上配置主从复制,开启二进制日志,设置服务id

[root@master etc]# vim /etc/my.cnf.d/mariadb-server.cnf

//在[mysqld]下面添加内容
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
log_bin=mysql-bin     //开启二进制日志
server_id=1           //服务id号,不可从复,值为0时则表示拒绝服务器连接
innodb_flush_log_at_trx_commit=1   //每个事务提交时立刻写入binlog
sync_binlog=1         // 事务提交后立刻刷新binlog

//重启数据库服务
[root@master ~]# systemctl restart mariadb.service

在主服务器授权一个数据库用户用于复制,创建完成后在从服务器测试登录

//创建名为wjm,密码为wjm123!的用户
GRANT REPLICATION SLAVE ON *.* TO 'wjm'@'%' IDENTIFIED BY 'wjm123!';
Query OK, 0 rows affected (0.001 sec)
//刷新权限
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)

3、从服务器配置

在从服务器配置主从复制,设置服务id。

[root@slave ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
[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=2			//服务id号,不可重复,为0则拒绝从服务器连接,且要大于主库ID
relay-log = mysql_relay  //启用中继日志relay-log

//重启maraidb服务
[root@slave ~]# systemctl restart mariadb.service 

登录到从服务器数据库,在数据库中配置主服务器信息

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

Query OK, 0 rows affected (0.002 sec)

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.164.131
                   Master_User: wjm
                   Master_Port: 3306
                 Connect_Retry: 60
               Master_Log_File: mysql-bin.000004
           Read_Master_Log_Pos: 637
                Relay_Log_File: mariadb-relay-bin.000005
                 Relay_Log_Pos: 936
         Relay_Master_Log_File: mysql-bin.000004
              Slave_IO_Running: Yes    
             Slave_SQL_Running: Yes  
// IO和SQL都为yes表示配置成功    
......
......

4、测试

在主服务器创建一个数据库,然后到从数据库查看是否同步成功

//主服务器创建名为wjm88数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wjm                |
| wjm1001            |
+--------------------+
5 rows in set (0.001 sec)

MariaDB [(none)]> create database wjm88;
Query OK, 1 row affected (0.001 sec)

MariaDB [wjm]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wjm                |
| wjm1001            |
| wjm88              |
+--------------------+
6 rows in set (0.000 sec)


//到从服务器查看是否同步wjm数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| wjm                |
| wjm1001            |
| wjm88              |
+--------------------+
6 rows in set (0.001 sec)


同步完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值