ubuntu18.03安装mysql5.7双实例

一:在系统上先安装默认的实例

安装master节点

apt update
apt install mysql-server -y

二:安装第二个实例 (端口:3307)

1:创建实例存放的目录

mkdir /data/mysql/3307 -p
mkdir /data/mysql/3307/conf -p
mkdir /data/mysql/3307/mysqldata -p

2:copy配置文件

cp /etc/mysql/mysql.conf.d/mysqld.cnf /data/mysql/3307/conf/3307.cnf

3:修改配置文件

vi /data/mysql/3307/conf/3307.cnf
socket          = /data/mysql/3307/mysqld.sock
pid-file          = /data/mysql/3307/mysqld.pid
socket          = /data/mysql/3307/mysqld.sock
port              = 3307
datadir         = /data/mysql/3307/mysqldata
log_error      = /data/mysql/3307/error.log

4:配置 apparmor

vi  /etc/apparmor.d/usr.sbin.mysqld
找到:# Allow data dir access 在其中添加以下内容
 /data/mysql/3307/ r,
 /data/mysql/3307/** rwk,
重启apparmor服务
systemctl restart apparmor

5:配置权限

chown -R mysql:mysql /data/mysql/3307
find /data/mysql/3307 -type d | xargs chmod 755
find /data/mysql/3307 -type f | xargs chmod 644

6:初始化3307实例

mysqld --defaults-file=/data/mysql/3307/conf/3307.cnf --initialize --user=mysql --explicit_defaults_for_timestamp=1

7:初始化实例

7.1:无密码启动mysql3307实例

  mysqld_safe --defaults-file=/data/mysql/3307/conf/3307.cnf --skip-grant-tables &

7.2:登录3307端口的实例

  mysql -uroot -S /data/mysql/3307/mysqld.sock

7.3:登录后修改root密码

 > USE mysql;
 > UPDATE user SET authentication_string=password('123456789');
 > FLUSH PRIVILEGES;
 > exit;
 注:登出一次再次登录,执行下面的命令才可以正常停止服务
 # mysql -uroot -S /data/mysql/3307/mysqld.sock
 > ALTER user user() IDENTIFIED by '123456789';

8:停止mysql3307实例

mysqladmin -uroot -p -S  /data/mysql/3307/mysqld.sock shutdown

9:启动mysql3307实例

mysqld_safe --defaults-file=/data/mysql/3307/conf/3307.cnf  &
查看启动是否正常
ps -ef|grep mysql|grep 3307
netstat -nltp|grep 3307
登录实例:
mysql -uroot -S /data/mysql/3307/mysqld.sock -p

ubuntu18.03安装mysql5.7双实例

三:实现主从复制 (mysql主从搭建后默认同步所有库)

1:在主库上创建用于同步数据的账户

GRANT REPLICATION SLAVE ON *.* to 'cpuser'@'127.0.0.1' identified by 'CpPassw0rd';
FLUSH PRIVILEGES;

2:配置主库: /etc/mysql/mysql.conf.d/mysqld.cnf

2.1:先备份一份文件:cp /etc/mysql/mysql.conf.d/mysqld.cnf{,.bak}

2.2:修改主库配置文件

vi /etc/mysql/mysql.conf.d/mysqld.cnf
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log

重启master的mysql服务

2.3:查看bin_log是否开启

show global variables like '%log_bin%';

注:---------------------------------------------
replicate-do-db 设定需要复制的数据库
replicate-ignore-db 设定需要忽略的复制数据库
replicate-do-table 设定需要复制的表
replicate-ignore-table 设定需要忽略的复制表



2.4:查看主库的状态

show master status;

ubuntu18.03安装mysql5.7双实例

3:从库配置

3.1:修改配置文件:/data/mysql/3307/conf/3307.cnf

server-id = 2

3.2:然后执行下面的命令同步当前信息

change master to master_host='127.0.0.1', master_user='cpuser', master_password='CpPassw0rd',master_log_file='mysql-bin.000002', master_log_pos=154;

3.3:开启同步

start slave;

3.4:查看主从同步情况

show slave status\G;
ubuntu18.03安装mysql5.7双实例

4:测试数据库的同步

4.1:在上库上创建一个数据库,看从库是否创建

create database test_1;

4.2:在主库创建一个用户,看从库是否也会创建

grant all privileges on test_1.* to "testuser"@"%" identified by "12345678";
flush privileges;

4.3:在从节点上查看

mysql -u testuser -h 127.0.0.1 -S /data/mysql/3307/mysqld.sock -p

ubuntu18.03安装mysql5.7双实例

5:配置从库只读

set global read_only=1; # 设置普通账号的只读模式
set global read_only=0; # 取消普通账号的只读模式

GRANT all privileges ON . to 'cp'@'%' identified by '123456789';
FLUSH PRIVILEGES;

有数据的部分:
mysqldump -uroot -p --all-databases --lock-all-tables > master_db.sql

说明:
-u :用户名
-p :示密码
--all-databases :导出所有数据库
--lock-all-tables :执行操作时锁住所有表,防止操作时有数据修改
~/master_db.sql :导出的备份数据(sql文件)位置,可自己指定




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章