mysql
1. mysql5编译安装(企业中稳定)
1.1 mysql5.7下载安装并编译
- mysql8安装:
# tar zxf mysql-boost-5.7.31.tar.gz
# mkdir build
# cd build
# cmake3 ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/data/mysql \
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DSYSCONFDIR=/etc \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \
-DWITH_BOOST=/root/mysql-5.7.31/boost/boost_1_59_0/
# make -j2 ##2表示使用俩个内核同时工作,但是虚拟机本身2G内存吃不消,直接make就好。
# make install
1.2 配置操作
- 拷贝启动脚本:
# cd /usr/local/lnmp/mysql/support-files/
# cp mysql.server /etc/init.d/mysqld
- 新建用户:
# useradd -M -d /usr/local/lnmp/mysql/ -s /sbin/nologin mysql
- 创建数据目录:
# mkdir -p /data/mysql
# chown mysql.mysql /data/mysql
- 添加变量:
# vim ~/.bash_profile
PATH=$PATH:$HOME/bin:/usr/local/lnmp/php/bin:/usr/local/lnmp/mysql/bin
# source ~/.bash_profile
- 修改配置:
# vim /etc/my.cnf
[mysqld]
basedir=/usr/local/lnmp/mysql
datadir=/data/mysql
socket=/data/mysql/mysql.sock
- 初始化数据库:
# mysqld --initialize --user=mysql
- 修改mysql管理员密码(添加了安全插件的操作):
# vim /etc/my.cnf
skip-grant-tables //添加参数
# /etc/init.d/mysqld restart
# mysql -p
mysql> update mysql.user set authentication_string='' where user='root';
# vim /etc/my.cnf
#skip-grant-tables //注释或删除参数
# /etc/init.d/mysqld restart
# mysql -p
mysql> alter user root@localhost identified by 'Westos+007';
mysql> flush privileges;
出现Segmentation fault问题参考下面网址
拷贝启动脚本
新建用户
创建数据目录
添加变量
修改配置
初始化数据库
修改mysql管理员密码
1.3 图形化数据库的设置
2. 数据库的主从复制
2.1 配置从属数据库server2
server2和server1上的初始化配置是一样的
初始化从属数据库server2
主从复制的前期环境到此结束!!!!
2.2 主从复制
- master设置server-id:
SET GLOBAL server_id = 1; //在线生效,mysql8默认id为1
[mysqld] //保存到my.cnf文件
server-id=1
- master创建复制用户:
CREATE USER 'repl'@'172.25.0.%' IDENTIFIED BY 'Westos+007';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.25.0.%';
默认使用caching_sha2_password
- 如果需要使用mysql_native_password插件,使用以下命令:
create user westos@localhost identified with mysql_native_password by 'Westos+007';
或直接写入my.cnf:
default_authentication_plugin=mysql_native_password
- slave配置server-id:
SET GLOBAL server_id = 2;
[mysqld]
server-id=2
- slave配置复制:
CHANGE MASTER TO
-> MASTER_HOST='172.25.0.11',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='Westos+007',
-> MASTER_LOG_FILE='binlog.000001',
-> MASTER_LOG_POS=708,
-> GET_MASTER_PUBLIC_KEY=1;
//在不使用安全连接并且用户帐户已使用caching_sha2_password插件进行身份验证(MySQL 8.0的默认设置),则必须指定 MASTER_PUBLIC_KEY_PATH或 GET_MASTER_PUBLIC_KEY选项在该 CHANGE MASTER TO语句中启用基于RSA密钥对的密码交换。
master设置(server1)
从属机的配置
测试主从复制是否成功(主数据库添加数据,观察从属数据库是否发生变化)
主数据库内容
从属数据库内容
2.3 mysql服务之GTID复制
- GTID复制:
# vim /etc/my.cnf
[mysqld]
gtid_mode=ON
enforce-gtid-consistency=ON
- slave配置:
CHANGE MASTER TO
> MASTER_HOST = host,
> MASTER_PORT = port,
> MASTER_USER = user,
> MASTER_PASSWORD = password,
> MASTER_AUTO_POSITION = 1;
server1上配置
server2上配置
修改主数据库内容,观察server2数据库gtid的变化
2.4 mysql服务之半同步复制
- 半同步复制:
master:
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled =1;
show status like 'Rpl_semi%';
slave:
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
SET GLOBAL rpl_semi_sync_slave_enabled = 1;
STOP SLAVE IO_THREAD;
START SLAVE IO_THREAD;
master配置
slave配置
俩个数据库结合进行实验