首页 > 数据库 >mysql主从搭建(最全最详细)

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

时间:2023-08-29 14:45:19浏览次数:35  
标签:log 33 最全 mysql8.0 mysql 从库 data 主从

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 --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;

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. 进入mysql的bin目录

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中内容在从库上执行。

 

标签:log,33,最全,mysql8.0,mysql,从库,data,主从
From: https://www.cnblogs.com/brook0366/p/17664713.html

相关文章

  • redis主从复制
    目录一什么是主从复制1.1主从复制:一主一从,一主多从1.2特点1.3Redis主从复制的作用二主从原理2.1主库是否要开启持久化(一般情况要开启)3.2方式一3.3方式二:配置文件方式一什么是主从复制redis单实例--->容易产生机器故障;容量瓶颈;QPS(每秒查询率)瓶颈1.1主从复制:一主一......
  • MySQL主从数据恢复
    主要步骤:导出主库数据,恢复到从库,重新开启主从同步。 1.先停止从库从库上执行stopslave; 2 在从库mysqlbin目录下导出主库数据./mysqldump-h192.168.174.201--port=3359-uroot-p'pwd'--default-character-set=UTF8MB4--single-transaction--events--triggers......
  • mysql报错:The last packet successfully received from the server was 51,384,505 mi
    这个报错是MySQL连接超时导致的。当MySQL客户端在一段时间内没有收到来自服务器的数据包时,会触发这个错误。产生这个错误的可能原因有:1.网络问题:可能是网络连接不稳定或延迟过高,导致数据包在传输过程中丢失或延迟。2.MySQL服务器负载过高:如果MySQL服务器负载过高,无法及......
  • Mysql查询性能优化相关
    慢查询基本原因访问的数据太多分析是否检索了过多的数据。mysql服务器是否在分析大量超过需要的数据。注意事项尽量不用select*分页查询(mysql从设计上让连接和断开连接都是很轻量级的。运行多个小查询不是大问题)缓存效率高减少锁竞争查询的执行基础查询执行......
  • mysql索引失效的几种情况
    1.在索引字段上使用函数2.在索引字段上使用运算3.索引字段使用了类型转换,即原本是字符串类型,查询时用的数字类型4.范围条件右边的列索引失效,比如>,<,between等,in不属于范围条件5.!=或者<>索引失效6.isnu11可以使用索引,isnotnu11无法使用索引7.like以通配符号开头索引......
  • Kafka - 为什么 Kafka 不像 MySQL 那样允许追随者副本对外提供读服务?
    几个原因:1,kafka的分区已经让读是从多个broker读从而负载均衡,不是MySQL的主从,压力都在主上;2,kafka保存的数据和数据库的性质有实质的区别就是数据具有消费的概念,是流数据,kafka是消息队列,所以消费需要位移,而数据库是实体数据不存在这个概念,如果从kafka的follower读,消费端offset控制......
  • MySq之一条mysql语句来更新(插入)查询结果
    想起之前没问人家自己那213的做法,想起来都想怎么笑(记录之前困惑的问题解决了的)非常的简单要插入teble1表中的id>100的字段name,address 到table2表insertintotable2(name,address)(selectname,addressfromtable1whereid>100)要查询teble1表中的name=阿呜......
  • MySql之 replace 用法
    mysqlreplace实例说明: UPDATEtb1SETf1=REPLACE(f1,'abc','def'); REPLACE(str,from_str,to_str) 在字符串str中所有出现的字符串from_str均被to_str替换,然后返回这个字符串 这个函数用来批量替换数据中的非法关键字是很有用的!如下例子: 例1:UPDATEBBSTo......
  • MYSQL如何从文件中把数据复制进数据库表中
    。至少有两种修正方法:·编辑文件“mysql.txt”改正错误,然后使用DELETE和LOADDATA清空并重新装载表:·mysql>DELETEFROMpet;·mysql>LOADDATALOCALINFILE'pet.txt'INTOTABLEpet;注:‘***’->是你的文件路径地址然而,如果这样操做,......
  • Mysql之数据库设计
    一、三大范式1、第一范式:消除一个字段包含多个数据库值,消除一个记录包含重复的组(单独的一列包含多个项目),即可满足1NF。2、第二范式:消除部分依赖性即可转化为2NF。部分依赖性表示一个记录中包括的字段只依赖于主键的一部分。解决部分依赖性的最简单方法是将复合主键分成两部分,每......