搭建主从数据库 这里需要准备两台虚拟机 自己准备
1. 搭建主从数据库
1) 安装数据库mysql8.0版本
下载软件包
wget http://repo.mysql.com/mysql80-community-release-el7.rpm
2)安装 下载
rpm -ivh mysql80-community-release-el7.rpm
yum install -y mysql-community-server
3)启动mysqld服务
systemctl enable --now mysqld
2. 配置数据库
1)查数据初始密码
grep -i 'password' /var/log/mysqld.log
2) 修改数据库初始密码
#1.mysql1登录
mysql -uroot -p ---- 密码为初始密码:alNttsCym2;Q
#2.修改
alter user 'root'@'localhost' identified by 'Xu712814@';
3.配置主数据库
创建数据库用户 可以让他远程
create user 'master'@'%' identified with mysql_native_password by 'Xu712814@';
赋予用户所有权限
grant replication slave on *.* to 'master'@'%';
刷新数据库 同步设置
flush privileges;
查看设置是否同步
show grants for 'master'@'%';
mysql> show grants for 'master'@'%';
+------------------------------------------------+
| Grants for master@% |
+------------------------------------------------+
| GRANT REPLICATION SLAVE ON *.* TO `master`@`%` |
+------------------------------------------------+
1 row in set (0.00 sec)
修改数据库主配置文件
[root@mysql1 ~]# sed 4,+4p -n /etc/my.cnf
[mysqld]
server-id=99 数据库服务的唯一ID
log-bin=mysql-bin 设置binlog日志的存放位置
binlog_do_db=backup 设置进行同步的数据库,这条不写表示同步全部数据库
binlog_ignore_db=mysql 设置不进行同步的数据库
启动数据库
systemctl restart mysqld
查看主库的master信息
mysql> show master status;
+------------------+----------+--------------+------------------+-----------------
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Se
+------------------+----------+--------------+------------------+-----------------
| mysql-bin.000002 | 1264 | backup,nu | mysql |
+------------------+----------+--------------+------------------+-----------------
1 row in set (0.00 sec)
#说明:
#File 就是我们刚刚设置的log-bin的存放文件,用来记录mysql操作的日志文件。
#Position 表示是偏移量
#Binlog_Do_DB 需要进行同步的数据库
#Binlog_Ignore_DB 不进行同步的数据库
4.配置从数据库配置
#1.mysql1登录
mysql -uroot -p ---- 密码为初始密码:alNttsCym2;Q
#2.修改
alter user 'root'@'localhost' identified by 'Xu712814@';
修改mysql配置文件
[root@mysql2 ~]# egrep -v '^$|#' /etc/my.cnf
[mysqld]
server-id=100 ---- 数据库服务的唯一ID
重启数据库
systemctl restart mysqld
5.绑定主数据库
change master to master_host='10.0.0.99',master_user='master',master_password='Xu712814@',master_log_file='mysql-bin.000001',master_log_pos=1264;
#2.sql 语句说明
master_host=10.0.0.99 #后面要填写第一台主master的IP
master_user= master #写之前在主master上创建的用户名
master_password=Cui404412@ #写之前在主master上创建的用户名的密码
master_log_file= #日志文件,在master使用show master status;那一步显示的值。
master_log_pos= #偏移量
开启主从同步
start slave;
查看是否同步
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for source to send event
Master_Host: 10.0.0.101
Master_User: master
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 157
Relay_Log_File: mysql2-relay-bin.000002
Relay_Log_Pos: 326
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#说明:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
表示数据库正在同步
6.测试 主从数据库
创建库
create database backup;
进入库
use backup
在库中创建表
create table test( id int comment'编号', workno varchar(10) comment'工号', name varchar(10) comment'姓名', gender char(1) comment'性别', age tinyint unsigned comment'年龄证号', workadderss varchar(50) comment'工作地址', entrydate date comment';
#创建test1表
create table test1(id int,name varchar(20) not null default 'username');
#3.查看表
mysql> show tables
-> ;
+------------------+
| Tables_in_backup |
+------------------+
| test |
| test1 |
+------------------+
2 rows in set (0.00 sec)
查看表内容
mysql> desc test;
desc test1;
查看从库是否同步
show databases;
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| backup |
| information_schema |
| mysql |
| nu |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0.00 sec)
查看表
mysql>
mysql> use nu;
Database changed
mysql> show tables;
+--------------+
| Tables_in_nu |
+--------------+
| test |
| test1 |
+--------------+
2 rows in set (0.00 sec)
查看表中内容
desc test;
主从数据库配置完成
配置主从数据库 注意一点在创建库之后需要有表 这样从库就会显示主库的数据表内容
如果不需要配置
binlog_do_db=backup 设置进行同步的数据库,这条不写表示同步全部数据库