安装
安装前准备
创建一个用户和组用于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;