mysql搭建主从复制

Mysql主从复制搭建过程:

  1. 主从需同步时间,主开启ntpd(ntp网络时间协议,它的端口号udp123)服务-----修改配置,从通过/usr/sbin/ntpdate 主ip(ntpdate包需要提前安装);
  2. 主:开启中继二进制日志;
  3. 主上进行从授权
  4. 从:同步主

Mysql主从复制原理:

主master服务器将数据的改变都记录到二进制binlog日志中,只要master上的数据发生改变,则将其改变写入二进制日志;

从salve服务器会在一定时间间隔内对主master二进制日志进行探测其是否发生改变,如果发生改变,则开始一个I/O Thread请求主master二进制事件

同时主节点为每个I/O线程启动一个dump线程,用于向其发送二进制事件,并保存至从节点本地的中继日志中;

从节点将启动SQL线程从中继日志中读取二进制日志,在本地重放,使得其数据和主节点的保持一致

最后I/O Thread和SQL Thread将进入睡眠状态,等待下一次被唤醒。

  1. 环境基础配置

192.168.6.128  主

192.168.6.129  从

128、129都操作

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# systemctl stop firewalld

128上操作

# hostnamectl set-hostname db1 #修改主机名

# vim /etc/hosts 

192.168.6.128 db1

192.168.6.129 db2

129上操作

#hostnamectl set-hostname db2

# vim /etc/hosts 

192.168.6.128 db1

192.168.6.129 db2

2.安装数据库(128、129都操作)

2.1创建安装用户mysql

# useradd  mysql

# passwd mysql #生产环境建议配置账号密码

2.2设置ulimit参数

# vim /etc/security/limits.conf

文件最后添加

* soft nofile 65536

* hard nofile 131072

* soft nproc 65536

* hard nproc 65536

2.3执行安装

# yum install -y libaio

# vim /etc/my.cnf

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

port = 3306

socket = /tmp/mysql.sock

datadir = /data/mysql

skip-name-resolve

lower_case_table_names=1

character-set-server=utf8

sql_mode=NO_ENGINE_SUBSTITUTION

default_password_lifetime=0

[mysql]

no-auto-rehash

#解压缩安装包

# wget -c https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.25-linux-glibc2.12-x86_64.tar

# tar xf mysql-8.0.25-linux-glibc2.12-x86_64.tar -C /usr/local/

# cd /usr/local/

# mv mysql-8.0.25-linux-glibc2.12-x86_64 mysql

# cd /usr/local/mysql

# chown -R mysql.mysql /usr/local/mysql

#创建数据存放目录

# mkdir -p /data/mysql

# chown -R mysql.mysql /data/mysql

# chmod -R 755 /usr/local/mysql/

#执行初始化命令

# bin/mysqld --initialize --user=mysql --datadir=/data/mysql

如下图红框内是初始密码,需要记录下来。

 

将mysql注册为系统服务

# cd /usr/local/mysql

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

# chmod 700 /etc/rc.d/init.d/mysqld

# service mysqld start

本地连接数据库,密码是上图红框中的初始密码

# cd /usr/local/mysql/bin/

# ./mysql -uroot -p

连接mysql后执行下列命令,修改初始密码和访问权限:

Mysql> alter user 'root'@'localhost' IDENTIFIED BY '123456';

Mysql> use mysql;

Mysql> update user set host = '%' where user = 'root' and host='localhost';

Mysql> flush privileges;

3.搭建主从复制

检查两台主机的时间是否一致

# date

3.1修改主配置文件

# vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin

log-slave-updates=true

server-id=1

# service mysqld restart

mysql  -uroot -p

mysql>create user 'myslave'@'192.168.6.129' identified with mysql_native_password by '123456';

mysql>GRANT ALL ON *.* TO 'myslave'@'192.168.6.129';

mysql> flush privileges;

Mysql>show master status\G;

记下这两个参数

 

3.2修改从上的配置

# vim /etc/my.cnf

[mysqld]

log-bin=mysql-bin

log-slave-updates=true

server-id=2

# service mysqld restart

# mysql -uroot -p

Mysql>change master to master_host='192.168.6.128',master_user='myslave',master_password='123456',master_log_file='mysql-bin.000013',master_log_pos=1008;

Mysql> flush privileges;

Mysql> start slave;

Mysql>show slave status\G;

如图显示是正常的,主从就搭建好了,可以做些测试,看数据是否同步

 

           Slave_IO_State: Waiting for master to send event
              Master_Host: 192.168.6.128  //主服务器地址
              Master_User: myslave   //授权帐户名,尽量避免使用root
              Master_Port: 3306    //数据库端口,部分版本没有此行
              Connect_Retry: 60
              Master_Log_File: mysql-bin.000013
              Read_Master_Log_Pos: 1223     //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
              Relay_Log_File: localgist-relay-bin.000015
              Relay_Log_Pos: 1223
              Relay_Master_Log_File: mysql-bin.000013
              Slave_IO_Running: Yes    //此状态必须YES
              Slave_SQL_Running: Yes     //此状态必须YES

3.3验证主从复制

主库上创建数据库或表数据

# mysql  -uroot -p

Mysql>create database test;

Mysql> use test;

mysql> create table tb1(id int,name varchar(20));

Mysql> inster into tb1 (id,name) values(1,’zhangsan’);

从库上进行查看,是否同步

# mysql  -uroot -p

Mysql> show databases; 查看是否同步

Mysql> use test;

Mysql> show tables;

Mysql> select * from tb1;

主库从库数据一致,主从搭建成功。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值