Mysql主从部署
master: 192.168.68.136 (slave)
slave: 192.168.68.137 (master)
主库master端配置 (136)
# 安装好mysql/mariadb数据库:
yum instal mariadb mariadb-server -y
# 修改配置文件/etc/my.cnf,在[mysqld]指令段添加以下行:
server-id=1 #在同一个主从复制环境中server-id必须保持唯一
log-bin=jfedu-bin #开启并指定log-bin文件
# 启动数据库服务:
systemctl start mariadb
# 查看mysql进程:
ps-ef|grep mariadb
# 查看mysql端口:
netstat -ntlp |grep 3306
查看配置是否生效
# 通过mysql直接进入数据库:
[root@localhost ~]# mysql
# 验证二进制功能是否开启:查看log_bin和sql_log_bin是否均为on;
MariaDB [(none)]> show variables like "%log_bin";
授权从库---访问账号-tongbu(123456)
MariaDB [(none)]> grant replication slave on *.* to "tongbu"@"192.168.68.137" identified by "123456";
MariaDB [(none)]> flush privileges;
# replication slave是MySQL数据库中表示复制的权限名称,
# "tongbu"@"192.168.68.137"则是表示从数据库服务器192.168.68.137登
# 陆到主数据库服务器时用到的用户名称tongbu(用户会自动帮忙创建 ),123456表示登陆密码。
这样,我们就在主数据库服务器上创建了一个可以进行复制的用户账号了。然后我们启动主数据库服务器就可以了
查询主库状态
MariaDB [(none)]> show master status\G
*************************** 1. row ***************************
File: jfedu-bin.000003
Position: 476
Binlog_Do_DB:
Binlog_Ignore_DB:
1 row in set (0.00 sec)
从库slave端部署(137)
# 安装mysql服务:
yum install mariadb mariadb-server -y
# 修改mysql配置文件,在[mysqld]字段下添加以下行:
server-id=2
# 启动数据库服务:
systemctl start mariadb
登录数据库
[root@localhost ~]# mysql 或 mysql -uroot -p
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.64-MariaDB MariaDB Server
...
指定master
MariaDB [(none)]> change master to master_host="192.168.68.136", master_user="tongbu", master_password="123456", master_log_file=" jfedu-bin.000003", master_log_pos=476;
或格式:
MariaDB [(none)]> change master to
-> master_host="192.168.68.136",
-> master_user="tongbu",
-> master_password="123456",
-> master_log_file="jfedu-bin.000003",
-> master_log_pos=476;
启动slave进程
MariaDB [(none)]> slave start;
Query OK, 0 rows affected (0.01 sec)
查看slave同步状态
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.75.80
Master_User: tongbu
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: jfedu-bin.000003
Read_Master_Log_Pos: 632
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 685
Relay_Master_Log_File: jfedu-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
# Slave_IO_Running与Slave_SQL_Running均为yes,表示同步正常!
以上配置是实现主从数据库。。如果要实现主主,则要进行下面操作
master端配置(137的操作(从==》主))
# 修改配置文件,在[mysqld]指令块下添加如下行:
server-id=2
log-bin=jfedu2-bin
#重启数据库
systemctl restart mariadb
#查看master状态
MariaDB [(none)]> show master status;
#授权从库(我们一般实现的是数据的交叉同步)
MariaDB [(none)]> grant replication slave on *.* to "tongbu"@"192.168.68.136" identified by "123456";
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
slave端配置(136(主==》从))
MariaDB [(none)]> change master to
-> master_host="192.168.68.137",
-> master_user="tongbu",
-> master_password="123456",
-> master_log_file="jfedu2-bin.000001",
-> master_log_pos=503;
MariaDB [(none)]> slave start;
MariaDB [(none)]> show slave status\G;
同步测试
主库
主库端授权所有远程主机访问权限给root
# GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# flush privileges;
# 在主库创建一个数据库:
MariaDB [(none)]> create database jfedu2 charset=utf8;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jfedu2 |
| mysql |
| performance_schema |
| test |
+--------------------+
# 在从库查看:
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| jfedu2 |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)