无锡做网站,河南建设工程协会网站,郑州商城网站建设,英文商城网站模板什么是主从数据库 主从数据库是一种数据库架构模式#xff0c;通常用于提高数据库的性能、可用性和可伸缩性。
它包括两种类型的数据库服务器#xff1a;
1#xff09;主数据库#xff08;Master#xff09;#xff1a;主数据库是读写数据的主要数据库服务器。所有写操…什么是主从数据库 主从数据库是一种数据库架构模式通常用于提高数据库的性能、可用性和可伸缩性。
它包括两种类型的数据库服务器
1主数据库Master主数据库是读写数据的主要数据库服务器。所有写操作插入、更新、删除都在主数据库上执行。主数据库负责维护数据的一致性并将写操作的变更记录下来。
2从数据库Slave从数据库是只读副本它从主数据库中复制数据。承担一部分主库的的读数据压力从而减轻了主数据库的负担。从数据库可以有多个构成一个复制链其中每个从数据库都从前一个从数据库中复制数据。 主从数据库优缺点 1优点
高可用主库挂了从库顶上。读写分离主库用于写从库用于读从而缓解主库压力。备份数据。
2缺点
数据延迟由于数据复制的时间延迟从数据库可能不会立即反映主数据库中的更改。配置和维护复杂性设置和维护主从数据库架构需要额外的工作特别是确保数据的一致性和复制的稳定性。
主从数据库的搭建 主库配置
1修改配置文件/etc/my.cnf
# mysql服务ID保证整个集群环境中唯一默认为1
server-id1# 是否只读1代表只读0代表读写
read-only0# 开启gtid用于适配MASTER_AUTO_POSITION
gtid-mode ON
enforce-gtid-consistency ON
# log-slave-updates1
2重启MySQL服务器
systemctl restart mysqld
3登录mysql创建远程连接的账号并授予主从复制权限
# 创建s01用户并设置密码该用户可在任意主机连接该MySQL服务
# 删除创建的用户drop user s01%;
create user s01% identified with mysql_native_password by Root123456;# 为s01用户分配主从复制权限
grant replication slave on *.* to s01%;
4通过指令查看二进制日志坐标
show master status;
执行结果 file从哪个日志文件开始推送position从哪个位置开始推送日志binlog_ignore_db不需要同步的数据库
从库配置
1修改配置文件 /etc/my.cnf
# mysql服务ID保证整个集群环境中唯一默认为1
server-id2# 是否只读1代表只读0代表读写
read-only1# 开启gtid用于适配MASTER_AUTO_POSITION
gtid-mode ON
enforce-gtid-consistency ON
# log-slave-updates1
2重启MySQL服务器
systemctl restart mysqld
3登录mysql设置主库配置
# 使用s01用户连接
change master to source_host127.0.0.1,source_users01,source_passwordkingsoft.,master_port3307,MASTER_AUTO_POSITION 1;# 使用root用户连接二选一即可
change master to source_host127.0.0.1,source_userroot,source_passwordkingsoft.,master_port3307,MASTER_AUTO_POSITION 1;注
source_host如果是同一台机器用127.0.0.1或内网ip都可以如果是不同机器使用外网ipmaster_port指定主节点的端口号未指定时默认3306
4开启同步操作
# 关闭同步操作stop slave;
start slave;
6查看主从同步状态
show slave status\G;
执行结果 注如果 Slave_IO_Running 和 Slave_SQL_Running 都为 Yes则说明主从复制部署成功。
Master_Log_File: 从服务器正在读取的主服务器的二进制日志文件的名称。Read_Master_Log_Pos: 从服务器已经读取的主服务器二进制日志的位置。Relay_Master_Log_File: 已经应用到从服务器数据的主服务器二进制日志文件的名称。Exec_Master_Log_Pos: 已经应用到从服务器数据的主服务器二进制日志的位置。Slave_IO_Running 和 Slave_SQL_Running: 分别表示从服务器的 I/O 线程和 SQL 线程是否正在运行。Last_Errno 和Last_Error: 最后一次复制时的错误号和错误信息。
注正常情况下无法查看master.info里的内容但可以通过show slave status指令查看其中许多重要信息。