首先你使用yum安装了mysql8,还不会安装?(看我其他帖子内容)贼简单
CentOS7用yum安装MySQL8及各个版本_xiaomaomixj的博客-CSDN博客
vim /etc/my.cnf
cd /test
mkdir mysql_master_slave
cd mysql_master_slave
mkdir mysql_1
mkdir mysql_2
cd mysql_1
mkdir logs
cp /var/lib/mysql mysql
vim my.cnf
cd mysql_2
mkdir logs
cp /var/lib/mysql mysql
vim my.cnf
[client]
port = 3307
[mysqld]
datadir=/test/mysql_master_slave/mysql_1/mysql
log-error=/test/mysql_master_slave/mysql_1/logs/mysqld.log
user=mysql
port = 3307
socket=/test/mysql_master_slave/mysql_1/mysql/mysql.sock
[client]
port = 3308
[mysqld]
datadir=/test/mysql_master_slave/mysql_2/mysql
log-error=/test/mysql_master_slave/mysql_2/logs/mysqld.log
user=mysql
port = 3308
socket=/test/mysql_master_slave/mysql_2/mysql/mysql.sock
cd /test
chown -R mysql:mysql mysql_master_slave/
mysqld --defaults-file=/test/mysql_master_slave/mysql_1/my.cnf
mysqld --defaults-file=/test/mysql_master_slave/mysql_2/my.cnf
mysqld --defaults-file=/test/mysql_master_slave/mysql_1/my.cnf &
mysqld --defaults-file=/test/mysql_master_slave/mysql_2/my.cnf &
echo $PATH
find / -name mysqld
lsof -c mysqld|grep sock$
mysql -uroot -S /test/mysql_master_slave/mysql_1/mysql/mysql.sock -P 3307 -p
mysql -uroot -S /test/mysql_master_slave/mysql_2/mysql/mysql.sock -P 3308 -p
show databases;
create database xiaomaomi;
show databases;
show databases;
show databases;
exit
ps -ef | grep mysqld
kill 36986
kill 37033
server-id=1
log-bin=mysql-bin
binlog-do-db=xjgg
server-id=2
log-bin=mysql-bin
replicate-do-db=xjgg
vim /test/mysql_master_slave/mysql_2/mysql/auto.cnf
mysqld --defaults-file=/test/mysql_master_slave/mysql_1/my.cnf
mysqld --defaults-file=/test/mysql_master_slave/mysql_2/my.cnf
mysql -uroot -S /test/mysql_master_slave/mysql_1/mysql/mysql.sock -P 3307 -p
mysql -uroot -S /test/mysql_master_slave/mysql_2/mysql/mysql.sock -P 3308 -p
CREATE DATABASE xjgg charset utf8;
use xjgg;
CREATE TABLE test (id int PRIMARY KEY AUTO_INCREMENT,name VARCHAR(10),jieshao VARCHAR(30)) charset utf8;
show tables;
#创建账户
create user 'zyh'@'127.0.0.1' identified by 'Xmm123456!';
#赋予权限,with grant option这个选项表示该用户可以将自己拥有的权限授权给别人
grant replication slave on *.* to 'zyh'@'127.0.0.1' with grant option;
#改密码&授权超用户,flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
flush privileges;
#加锁(解锁:unlock tables)
flush tables with read lock;
#这个生成的信息一会要用
show master status;
#解锁
UNLOCK TABLES;
exit
mysql -uzyh -S /test/mysql_master_slave/mysql_1/mysql/mysql.sock -P 3307 -p
mysql -uzyh -h 127.0.0.1 -S /test/mysql_master_slave/mysql_2/mysql/mysql.sock -P 3307 -p
mysql -uroot -S /test/mysql_master_slave/mysql_2/mysql/mysql.sock -P 3308 -p
#停止同步
stop slave;
#修改从库指向主库,使用上一步记录的文件名以及位点(注意没到分号就是一条语句)
CHANGE MASTER TO
master_host = '127.0.0.1',
master_port = 3307,
master_user = 'zyh',
master_password = 'Xmm123456!',
master_log_file='mysql-bin.000001',
master_log_pos=1369;
#启动同步
start slave;
#查看从库状态,Slave_IO_Running和Slave_SQL_Running都为yes说明同步成功,如果不为yes,请检查error_log,然后排查相关异常
show slave status\G;
mysql -uroot -S /test/mysql_master_slave/mysql_1/mysql/mysql.sock -P 3307 -p
use xjgg;
INSERT INTO test (name,jieshao) values ('小猫咪','睡觉使我快乐!'),('张三','法外狂徒'),('李四','没有介绍!');
select * from test;
mysql -uroot -S /test/mysql_master_slave/mysql_2/mysql/mysql.sock -P 3308 -p
use xjgg;
select * from test;
个人总结(这是说给作者自己听的):
直接执行mysql登录命令用的mysql.sock是/var/lib/mysql/mysql.sock
直接执行mysqld服务命令用的my.cnf是/etc/my.cnf
只有明白这些,才能做出来只用一台主机进行主从配置。