MySQL Replication(数据同步技术)
2024-10-12 11:00:15
MySQL Replication(数据同步技术)
A 到 B 完成主从复制,意思是数据同步技术 从读取主的二进制日志文件,按照日志中记录对从库进行同样的操作
复制类型:
异步复制 :默认的复制是异步,主执行完后立刻将结果返给客户端,不关心从是否接收或处理
全同步复制:当主执行完一个事务,从库都执行完该事务才返回给客户端。
半同步复制:介于异步与全同步之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到日志中返回客户端(最好在低延时的网络中使用)
一般使用异步复制的方式
双机部署环境:
主节点 | 192.168.80.24 |
从节点 | 192.168.80.26 |
----------------
首先要先安装mysql数据库
1,关闭防火墙和安全机制
systemctl stop firewalld
setenforce 0
iptables -F
2,配置ntp时间同步服务器并启动
yum -y install ntp
1,主节点做
vim /etc/ntp.conf
server 127.127.1.0
fudge 127.127.1.0 stratum 8
systemctl start ntpd
2,从节点
ntpdate 主节点IP
(第二种方法,使用互联网上时间同步服务器(每个节点都使用,方便便捷)
crontab -e
* */5 * * * /usr/sbin/ntpdate pool.ntp.org > /dev/null 2>&1 //每隔5小时同步一下时间
3,安装mysql安装包
安装 mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz
1,将系统中只带的mariadb删除
rpm -q mysql mysql-server mariadb mariadb-server
rpm -e .......
2,上传mysql二进制包解压
tar xf mysql-5.7.24-linux-glibc2.17-x86_64-minimal.tar.xz -C /usr/local/
cd /usr/local
mv mysql-5.7.24-linux-glibc2.17-x86_64-minimal/ mysql
3,创建mysql用户并赋予权限
useradd -M -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql/
4,初始化数据库
/usr/local/mysql/bin/mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize
5,修改配置文件
cat /etc/my.cnf
[mysqld]
port=3306
datadir=/usr/local/mysql/data
max_connections = 100
default-storage-engine = InnoDB
socket=/tmp/mysql.sock
character-set-server=utf8
[mysqld_safe]
log-error=/usr/local/mysql/data/mysql.log
pid-file=/usr/local/mysql/data/mysql.pid
6,做启动文件
cd /usr/local/mysql/support-files
cp mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
ln -s /usr/local/mysql/bin/* /usr/local/bin/
systemctl start mysqld
7,修改密码
####mysqladmin -uroot -p'复制的初始密码' password'123456'
mysql>alter user user() identified by "123456" ;
#登陆:
mysql -uroot -p'123456'
开始配置主从
4,配置主mysql并重启
vim /etc/my.cnf
server-id=1
log-bin=mysql-binlog
log-slave-updates=true
systemctl restart mysqld
5,主创建replication用户
进入数据库mysql
>grant replication slave on *.* to 'myslave'@'192.168.80.%' identified by '123456';
>flush privileges;
> show master status;
replication slave :用于复制从属服务器(从主服务器中读取二进制日志事件权限)
测试是否成功
从 连接一下 主。如果成功登陆则没有问题
mysql -u myslave -p123456 -h 192.168.80.24
补充:生产环境下,主运行过一段时间,已经存在数据,为了保证数据一致性,需要先备份。两种方式,直接备份数据文件或者mysqldump工具备份
6,从配置并重启
vim /etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
补充:如若有多台从,每一台都需要配置,并只修改server-id编号即可
systemctl restart mysqld
7,从进入数据库中配置
进入从数据库
>stop slave; //先停掉从的角色
>change master to master_host='192.168.200.115',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=477;
//配置新的从角色
>start slave; //启动角色
>show slave status\G //查看角色信息
补充:清除角色 >reset slave;
8.测试:在主中创建一个库,看从中是否复制成功
进入主数据库
>create database sampdb;
>use sampdb;
>create table new(name char(20),phone char(20));
进入从数据库
>show databases;
9.补充注意:主从复制,只是一种数据同步技术,不是架构;
如果是问数据库架构是如何,应该再加上HA(高可用),如下列举两个架构
- MySQL主主复制+Keepalived高可用
- MySQL+DRBD+Heartbeat
最新文章
- 2048游戏_QT实现
- 【uoj149】 NOIP2015—子串
- EDS 14.0 dtc:commmand not found
- 使用Google Code和客户端TortoiseSVN 工具搭建一个在线源代码版本控制系统
- 3D旋转特效
- WebDriverWait 中 and, or, not用法
- BeanUtils--内省加强
- 浙大 pat 1038 题解
- 自理一遍android 高级知识
- gitlab10.0安装手记
- Material Design之RecyclerView的使用(一)
- STM32F103引脚功能定义
- Python创建随机用户名密码并存放于Access数据库
- ProcessingElement.h
- redis_简单动态字符串
- WPF自定义控件(一)の控件分类
- Select2 添加默认值
- Java ArrayDeque源码剖析
- 【深度学习的实用层面】(一)训练,验证,测试集(Train/Dev/Test sets)
- jQuery中通过$.browser来判断浏览器
热门文章
- 无人机集群的分布式协作 VI-SLAM
- 网络工具netstat与ss
- TCP协议三握四挥、socket模块
- 2022年7月14日,第四组 周鹏,认识JAVA的第二天(;´д`)ゞ(;д;)
- [WPF]程序随系统自启动
- 可持久化栈学习笔记 | 题解 P6182 [USACO10OPEN]Time Travel S
- 如何理解scanf(“%d %d”,a,b)==2和scanf(“%d”,a)=1【摘抄笔记ψ(._. )>;】
- 假如你想在VUE的main.js里根据条件按需引入注册组件以及样式,那就这样子写,附赠自己写的vue一个框架配置多系统按需加载系统路由以及组件办法
- 从零写一个兼容MySQL/Oracle的Proxy中件间(一)《初识Oracle的通信协议》
- Function接口-默认方法:andThen