随笔 - 43  文章 - 0  评论 - 0  阅读 - 12723

mysql主从搭建(最全最详细)

1. 下载mysql解压包

Mysql newer version:   8.0.33

cat /etc/redhat-release   查看centOS版本

https://downloads.mysql.com/archives/community/  社区版下载地址

根据操作系统版本选择相应版本tar包,目前最新版本是8.0.33

 

2. 解压配置mysql

查看mysql用户组是否存在

groups mysql

不存在添加mysql用户组及用户

groupadd mysql && useradd -r -g mysql mysql;

解压tar

tar -zxvf mysql-8.0.33-el7-x86_64.tar.gz

mv mysql-8.0.33-el7-x86_64 mysql8.0.33

将此文件夹赋予权限

chown mysql:mysql -R /data/mysql;

创建mysql数据目录

mkdir /data/mysql/data

chown mysql:mysql -R /data/mysql/data;

配置mysql配置文件,主从配置时需指定不同的server-id,必须配置log-bin启用二进制日志。其它参数主要是一些性能配置和数据文件目录。

vi /etc/my.cnf

[mysql]

default-character-set=utf8mb4

[client]

#socket=/var/lib/mysql/mysql.sock

[mysqld]

port=3306

server-id=3306

user=mysql

general_log = 1

general_log_file= /data/mysql/mysql8.0.33/data/mysql.log

#socket=/var/lib/mysql/mysql.sock

basedir=/data/mysql/mysql8.0.33

datadir=/data/mysql/mysql8.0.33/data

log-bin=/data/mysql/mysql8.0.33/data/mysql-bin

innodb_data_home_dir=/data/mysql/mysql8.0.33/data

innodb_log_group_home_dir=/data/mysql/mysql8.0.33/data/

character-set-server=utf8mb4

lower_case_table_names=1

autocommit=1

default_authentication_plugin=mysql_native_password

symbolic-links=0

[mysqld_safe]

log-error=/data/mysql/mysql8.0.33/data/mysql-error.log

pid-file=/data/mysql/mysql8.0.33/data/mysql.pid

执行下面命令初始化mysql

./mysqld --user=mysql --lower_case_table_names=1 --basedir=/data/mysql/mysql8.0.33 --datadir=/data/mysql/mysql8.0.33/data/ --initialize;

初始化后会生成一个密码

A(#UR<iDo8:i

注意:这里面生成的密码如果有&什么特殊字符的,无法登录成功。照网上的办法试了几种,没管用。最简单的办法删除mysql初始化的文件夹,重新执行初始化命令,生成一个不带&符号的密码...

1. 复制文件

cp /data/mysql/mysql8.0.33/support-files/mysql.server /etc/init.d/mysql; (修改文件的basedir, datadir目录)

cp /data/mysql/mysql8.0.33/support-files/mysql.server /etc/init.d/mysqld;

2. 赋予权限(赋予用户与用户组的权限)

chown 777 /etc/my.cnf

chmod +x /etc/init.d/mysql

chmod +x /etc/init.d/mysqld

3.检查一下/var/lib/mysql是否存在,否则进行创建

mkdir /var/lib/mysql

chown -R mysql:mysql /var/lib/mysql/

1. 进入mysqlbin目录

cd /data/mysql/mysql8.0.33/bin;

2. 启动mysql服务

service mysql start;    #启动mysql

service mysql stop;     #停止mysql

service mysql restart;  #重启mysql

service mysql status;   #查看mysql运行状态

3. 进入mysql并且首次修改root用户的密码(不修改密码不让操作库)

映射mysql命令

ln -s /data/mysql/mysql8.0.33/bin/mysql /usr/bin

mysql -uroot -p初始密码;   #进入mysql

alter user user() identified by 'bwt4567';   #修改初始密码

启动完成!

允许mysql对外访问(不配置,navicat及外部环境无法访问)

use mysql;

update user set host ='%' where user = 'root';

flush privileges;

3. 主从配置

主库查看show master status;  获取log文件及Position

 

主从配置(从库中执行)

change master to master_host='192.168.174.210', master_user = 'root', master_password='bwt4567',master_log_file='mysql-bin.000005', master_log_pos=643;

开启主从同步

start slave;

查看从库状态, 如果能看到这俩个线程都是Yes。则代表主从同步成功,接下来可以测试一下。主库中建一个表, 去从库查看是否也有相应表。

show slave status;

4. 主从复制原理

 

主从复制整体分为以下三个步骤:

  1. 主库将数据库的变更操作记录到Binlog日志文件中。
  2. 从库读取主库中的Binlog日志文件信息写入到从库的Relay Log中继日志中。
  3. 从库读取中继日志信息在从库中进行Replay,更新从库数据信息。

在上述三个过程中,涉及了Master的BinlogDump Thread和Slave的I/O Thread、SQL Thread,它们 的作用如下:

Master服务器对数据库更改操作记录在Binlog中,BinlogDump Thread接到写入请求后,读取 Binlog信息推送给Slave的I/O Thread Slave的I/O Thread将读取到的Binlog信息写入到本地Relay Log中。 Slave的SQL Thread检测到Relay Log的变更请求,解析relay log中内容在从库上执行。

 

posted on   lvguoliang(学无止境)  阅读(1243)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示