环境准备
本实验使用两台虚拟机,镜像使用centos7-1511mysql1 ------192.168.200.12
mysql2 ------192.168.200.13
1.更改主机名
192.168.200.12
hostnamectl set-hostname mysql12
192.168.200.13
hostnamectl set-hostname mysql2
修改hosts文件
mysql1 # vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.200.12 mysql1 192.168.200.13 mysql2 mysql1 # scp /etc/hosts mysql2:/etc/hosts # 将mysql1中配置好的的hosts文件发送给mysql2
2. 配置网络
参考 网络配置篇3. 配置yum源
3.1 mysql1
mysql1使用本地yum源具体配置参考 配置本地yum源
使用mysql1提供ftp服务,开放目录/opt/具体配置参考 搭建ftp服务
3.2 mysql2
mysql2使用mysql1提供的ftp服务作为yum源
mysql2 # cd /etc/yum.repos.d/ mysql2 # gzip * mysql2 # vi /etc/yum.repos.d/ftp.repo [ftp_local] # 源名字 name=this is lnb ftp repo # 描述 baseurl=ftp://192.168.200.12/centos # 指定从哪里下载软件包 ,需要从本地下载 gpgcheck=0 # 是否检查已经下载的软件包的信息,使用第三方yum源时建议打开,若打开则需要从官网下载RPM-GPG-KEY-CentOS-7 enabled=1 # 启动这个仓库 mysql2 # yum clean all # 清除缓存 mysql2 # yum makecache # 生成缓存 mysql2 # yum repolist # 查看可用安装包
4. (安装&初始化)数据库
mysql1&mysql2
# 在mysql1上进行的操作 mysql1 # yum install -y mariadb mariadb-server # 安装数据库客户端以及服务端 mysql1 # systemctl start mariadb # 启动数据库 mysql1 # systemctl enable mariadb # 将数据库设为开机自启 mysql1 # mysql_secure_installation # 初始化数据库 -------------------------------------------- # 在mysql2上进行相同的的操作 mysql2 # yum install -y mariadb mariadb-server # 安装数据库客户端以及服务端 mysql2 # systemctl start mariadb # 启动数据库 mysql2 # systemctl enable mariadb # 将数据库设为开机自启 mysql2 # mysql_secure_installation # 初始化数据库 -------------------------------------------- # 初始化说明 Enter current password for root (enter for none): #默认按回车 Set root password? [Y/n] y New password: #输入数据库root密码000000 Re-enter new password: #再次输入密码000000 Remove anonymous users? [Y/n] y Disallow root login remotely? [Y/n] n Remove test database and access to it? [Y/n] y Reload privilege tables now? [Y/n] y
5.配置数据库
5.1 mysql1
修改mysql1节点的数据库配置文件(/etc/my.cnf.d/server.cnf)[[mysqld]]
mysql1 # vi /etc/my.cnf.d/server.cnf … … [mysqld] … … log_bin = mysql-bin #记录操作日志 binlog_ignore_db = mysql #不同步mysql系统数据库 server_id = 12 #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如192.168.200.12,server_id就写12 … … mysql1 # systemctl restart mariadb # 重启mariadb服务
进入数据库,进行授权
mysql1 # mysql -uroot -p000000 # 进入数据库 # 授权在任何客户端机器上可以以root用户登录到数据库 > grant all privileges on . to root@‘%’ identified by “000000”; # 在主节点上创建一个user用户连接节点mysql2,并赋予从节点同步主节点数据库的权限 > grant replication slave on . to ‘user’@‘mysql2’ identified by ‘000000’;
5.2 mysql2
修改mysql1节点的数据库配置文件(/etc/my.cnf.d/server.cnf)[[mysqld]]
mysql2 # vi /etc/my.cnf.d/server.cnf … … [mysqld] … … log_bin = mysql-bin #记录操作日志 binlog_ignore_db = mysql #不同步mysql系统数据库 server_id = 13 #数据库集群中的每个节点id都要不同,一般使用IP地址的最后段的数字,例如192.168.200.13,server_id就写13 … … mysql2 # systemctl restart mariadb # 重启mariadb服务
进入数据库,配置从节点连接主节点的连接信息
mysql2 # mysql -uroot -p000000 > change master to master_host=‘mysql1’,master_user=‘user’,master_password=‘000000’; > start slave; # 开启从节点服务 > show slave status\G # 查看从节点服务状态 ------ Slave_IO_Running: Yes Slave_SQL_Running: Yes ------
可以看到Slave_IO_Running和Slave_SQL_Running的状态都是Yes,配置数据库主从集群成功。
6. 验证数据库主动服务
1.主节点创建数据库
mysql1 # mysql -uroot -p000000 > create database test; > use test; > create table company(id int not null primary key,name varchar(50),addr varchar(255)); > insert into company values(1,“alibaba”,“china”); > select * from company; ±—±--------±------+ | id | name | addr | ±—±--------±------+ | 1 | alibaba | china | ±—±--------±------+
2. 从节点验证复制功能
mysql2 # mysql -uroot -p000000 > show databases; ±-------------------+ | Database | ±-------------------+ | information_schema | | mysql | | performance_schema | | test | ±-------------------+ > use test; > show tables; ±---------------+ | Tables_in_test | ±---------------+ | company | ±---------------+ > select * from company; ±—±--------±------+ | id | name | addr | ±—±--------±------+ | 1 | alibaba | china | ±—±--------±------+
可以查看到主数据库中刚刚创建的库、表、信息,验证从数据库的复制功能成功。