mysql5.7.37从安装到同步

本文详细介绍了MySQL服务器的安装过程,包括创建用户、组,备份配置,设置权限,以及双主同步的配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装

安装前准备

创建一个用户和组用于mysql的运行

groupadd dba

在对应的组下创建用户

useradd mysql -g dba

为刚建立用户设置密码
echo后引号单内为密码

echo '123456' passwd | stdin --mysql

备份原有 mysql配置文件

mv /etc/my.cnf /etc/mt.cnf.bak

创建新的配置文件

touch /etc/my.cnf

编辑配置文件

[client]
socket=/tmp/mysql.sock
[mysqld]
port=3306
lower_case_table_names=1
basedir=/home/mysql/mysql
datadir=/home/mysql/mysql/data
pid-file=/home/mysql/mysql/mysql.pid
socket=/home/mysql/mysql/mysql.sock
log_error=/home/mysql/mysql/error.log

开始安装

切换mysql用户

su - mysql

切换用户时不要直接使用su username 那样shell环境不完整

建立上传文件夹

mkdir tar

进入刚建立的tar文件夹中上传文件

cd tar
rz

如果rz提示command not found 则需要安装lrzsz,lrzsz 使用 yum install lrszs 进行安装即可
一部分ssh工具上传会出现大量乱码,停止再次上传即可

解压文件

tar -xvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz  -C ../
mv mysql-5.7.37-linux-glibc2.12-x86_64/ mysql

初始化MySQL

/home/mysql/mysql/bin/mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql -- basedir=/home/mysql/mysql --datadir=/home/mysql/mysql/data

查看临时密码

cat /home/mysql/mysql/error.log | grep -i "password"

启动MySQL服务

/home/mysql/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql &

登录数据库与修改密码

登录数据库

/home/mysql/mysql/bin/mysql -uroot -p 

输入密码不会显示,输入刚才看到的临时密码

登陆时如果提示找不到sock文件,重新初始化即可解决。重新初始化后需要重新查看新的密码。

修改密码:

set password for 'root'@'localhost' = password('123456');

刷新权限

flush privileges; 

修改数据库登录权限,以便于远程连接,不需要远程连接可以不修改

修改可登录用户的主机IP

update user set host='%' where user='root';
grant all privileges on *.* to root@'%';

刷新权限

flush privileges;

关闭数据库,准备主从同步

/home/mysql/mysql/bin/mysqladmin -uroot -p shutdown

Enter password:输入密码(不显示)

双主同步

注意

同步前一定要关闭数据库

假设 主:master 192.168.3.105 从:slave 192.168.3.50
这里只是称之为主从,实际操作是搭建是双主。

主 master

修改MySQL配置文件my.cnf
增加以下内容

relay-log=/home/mysql/mysql/data/relay-bin
relay-log-info-file=/home/mysql/mysql/data/relay-log-info
log-bin=/home/mysql/mysql/data/mysql-bin
server-id=101
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=1

其中replicate-do是要同步的库,binlog-do是要同步库的日志。 binlog-ignore-db与replicate-ignore-db则是不同步的库。两台服务器的server-id 一定不要重复

启动数据库

在mysql的bin目录下运行

./mysqld_safe --defaults-file=/etc/my.cnf --user=mysql&

其中 file指向my.cnf文件 user是建立mysql的用户

连接数据库

./bin/mysql -uroot -p

输入密码

授权同步用户

-- 赋权
grant replication slave,file on *.* to 'root'@'%';
-- 刷新权限
flush privileges;

锁表

flush tables with read lock\G

查看master值

两台都需要查看

show master status\G

记录输出的内容

主要记录File和Position值

File: mysql-bin.000001 

Position: 510

从库 slave

编辑my.cnf文件

添加

relay-log=/app/mysql/data/relay-bin
relay-log-info-file=/app/mysql/data/relay-log-info
log-bin=/app/mysql/data/mysql-bin
server-id=102
binlog-do-db=test
binlog-ignore-db=mysql
replicate-do-db=licence_auth
replicate-do-db=test
replicate-ignore-db=mysql
log-slave-updates
slave-skip-errors=all
skip-name-resolve
sync_binlog=1
auto_increment_increment=2
auto_increment_offset=2

其中replicate-do是要同步的库,binlog-do是要同步库的日志。

启动数据库

/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mongodbtest &

连接数据库

/bin/mysql -uroot -p 

输入密码(不显示)

授权

-- 赋权
grant replication slave, file on *.* to 'root'@'%';
-- 刷新权限
flush privileges;

关闭二进制日志

 set sql_log_bin=OFF;

锁表

flush tables with read lock\G

查看master值

show master status\G

记录输出的内容

主要记录File和Position值

File: mysql-bin.000001 
Position: 510

开启二进制日志

set sql_log_bin=ON;

同步配置

主:master

连接数据库输入

change master to
-- 从slave的ip
master_host='192.168.3.50',
-- 从slave的mysql端口
master_port=3306,
-- 从slave的同步用户
master_user='root',
-- 从slave同步用户的密码
master_password='123456',
-- 之前记录的File和Position的参数值
master_log_file='mysql-bin.000001',
master_log_pos=510;

执行后输出 Query OK, 0 rows affected (0.01 sec) 便为成功

开启同步

start slave;

从:slave

进行相同操作输入 master 的参数

change master to
master_host='192.168.3.105',
master_port=3306,
master_user='root',
master_password='123456',
master_log_file='mysql-bin.000001',
master_log_pos=510;

执行后输出 Query OK, 0 rows affected (0.01 sec) 便为成功

开启同步

 start slave;

查看是否同步

show processlist\G;

查看server_id是否和配置文件中的一致

show variables like 'server_id';

开始同步

两个库全部执行

-- 取消锁表
unlock tables;
show slave status\G;

查看 Slave_IO和Slave_SQL是否为yes

同步测试

建立同步的库

CREATE DATABASE test;

打开同步的库

use test

建立表

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) NOT NULL,
    birthdate DATE,
    is_active BOOLEAN DEFAULT TRUE
);

插入数据

INSERT INTO users (username, email, birthdate, is_active)
VALUES
    ('test1', 'test1@runoob.com', '1985-07-10', true),
    ('test2', 'test2@runoob.com', '1988-11-25', false),
    ('test3', 'test3@runoob.com', '1993-05-03', true);~~~

查询数据

SELECT * FROM users;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

u1s3_fu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值