节点规划
IP | 主机名 | 节点 |
192.168.19.10 | mysql1 | 主数据节点 |
192.168.19.20 | mysql2 | 从数据节点 |
虚拟机配置1核/2G内存、20G硬盘
配置网络和修改主机名
# 修改主机名
# mysql1 节点
hostnamectl set-hostname mysql1
bash
# mysql2 节点
hostnamectl set-hostname mysql2
bash
# 配置网络
vi /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.19.10
PREFIX=24
GATEWAY=192.168.19.2
DNS1=114.114.114.114
挂载镜像
挂载CentOS-7-x86_64-DVD-2009.iso
# mount -o loop CentOS-7-x86_64-DVD-2009.iso /mnt/
# mkdir /opt/centos
# cp -rvf /mnt/* /opt/centos/
# umount /mnt/
配置FTP服务
# yum install vsftpd -y
#vi /etc/vsftpd/vsftpd.conf
添加 anon_root=/opt/ 保存并退出
#systemctl start vsftp
#systemctl enable vsftpd
关闭防火墙及selinux服务
配置防火墙和selinux文件
#vi /etc/selinux/config
更改SELINUX=disabled
生效临时命令
#setenforce 0
关闭防火墙并设置开机不自启
#systemctl stop firewalld
#systemctl disable firewalld
#iptables -F
#iptables -X
#iptables -Z
#iptables-save
配置hosts映射文件
[root@mysql1~]# vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.19.10 mysql1
192.168.19.20 mysql2
[root@mysql1~]# scp /etc/hosts 192.168.200.40:/etc/hosts
安装数据库服务
# mysql1 节点
[root@mysql1~]# yum install mariadb mariadb-server
[root@mysql1~]# systemctl start mariadb
[root@mysql1~]# systemctl enable mariadb
# mysql2 节点
[root@mysql2~]# yum install mariadb maridb-server
[root@mysql2]# systemctl start mariadb
[root@mysql2~]# systemctl enable mariadb
初始化数据库并配置主从服务
初始化数据库
[root@mysql1~]# mysql_secure_installation
Enter current password for root (enter fore none): #默认回车
Set root password? [Y/n] <mark>y</mark>
New password: #输入数据库密码‘000000’
Re-enter new password: #再次输入密码‘000000’
Remove anonymous users?[Y/n] <mark>y</mark>
Disallow root login remotely?[Y/n] <mark>n</mark>
Remove test database and access to it?[Y/n] <mark>y</mark>
Reload privilege tables now?[Y/n] <mark> y</mark>
[root@mysql2~]# mysql_secure_installation
Enter current password for root (enter fore none): #默认回车
Set root password? [Y/n] <mark>y</mark>
New password: #输入数据库密码‘000000’
Re-enter new password: #再次输入密码‘000000’
Remove anonymous users?[Y/n] <mark>y</mark>
Disallow root login remotely?[Y/n] <mark>n</mark>
Remove test database and access to it?[Y/n] <mark>y</mark>
Reload privilege tables now?[Y/n] <mark> y</mark>
配置mysql1主节点
[root@mysql1~]# vi /etc/my.cnf
[mysqld]
log_bin=mysql-bin
binlog_ignore_db=mysql
server_id=30
[root@mysql~]# systemctl restart mariadb
[root@mysql~]# mysql -uroot -p000000
在 mysql1 节点,授权在任何客户端机器上可以以root 用户登录到数据库,然后在主节点上创建一个 user 用户连接节点 mysql2,并赋予从节点同步主节点数据库的权限。
MariaDB[(none)]> grant all privileges on *.* to root@'%' identified by "000000";
MariaDB[(none)]> grant replication slave on *.* to 'user'@'mysql2' identified by '000000';
配置mysql2从节点
[root@mysql2~]# vi /etc/my.cnf
[mysqld]
log_bin=mysql-bin
binlog_ignore_db=mysql
server_id=40
在从节点 mysql2 上登录 MariaDB 数据库,配置从节点连接主节点的连接信息master host 为主节点主机名 mysql1,master user 为上一步中创建的用户 user.
[root@mysql2~]# systemctl restart mariadb
[root@mysql2~]# mysql -uroot -p000000
MariaDB[(none)]> change master to master_host='mysqll',master_user-='user',master_ password='000000';
配置完毕主从数据库之间的连接信息之后,开启从节点服务。使用 show slave statuslG命令,并查看从节点服务状态,如果 Slave IO Running 和 Slave SQL Running 的状态都为YES(如果不是,则看一看两台机连接是否断开),则从节点服务开启成功
MariaDB [(none)]> start slave;
MariaDB[(none)]> show slave status\G
<mark> Slave IO Running:Yes</mark>
<mark>Slave SQL Running:Yes</mark>
验证数据库主从服务
主节点创建数据库
先在主节点 mysql1 中创建库 test,并在库 test 中创建表 company,插入表数据,创建完成后,查看表 company 数据
[root@mysql1~]# mysql -uroot -p000000
MariaDB[(none)]> create database test;
MariaDB[(none)]> use test;
MariaDB(test]> create table company(id int not null primary key,name varchar(50),addr
#addr 后空格
varchar(255));\
MariaDB[test]> insert into company values(1,"alibaba","china");
MariaDB[test]> select * from company;
从节点验证复制功能
登录 mysql2 节点的数据库,查看数据库列表。找到 test 数据库,查询表,并查询内容验证从数据库的复制功能。
[root@mysql2~]# mysql -uroot -p000000
MariaDB[(none)]> show databases;
MariaDB[(none)]> use test;
MariaDB[test> show tables;
MariaDB [test]> select * from company;