centos MysqL 搭建
1 下载MysqL yum repository
参考官方文档:https://dev.mysql.com/downloads/repo/yum/
The MysqL Yum repository provides a simple and convenient way to install and update MysqL products with the latest software packages using Yum.
安装后,更改了centos的yum库MysqL版本信息。可以直接用yum install 安装MysqL。
如果直接下载MysqL-community-serve rpm安装,则会找不到其他依赖,安装起来比较麻烦。
2 使用yum repository 安装MysqL
使用yum repository 添加MysqL版本到yum库。
sudo rpm -Uvh platform-and-version-specific-package-name.rpm
确认yum库中设置的MysqL版本信息。MysqL community server的状态为:enabled
yum repolist all | grep MysqL
安装
sudo yum install MysqL-community-server
启动
sudo service MysqLd start
3 配置MysqL
sudo grep 'temporary password' /var/log/MysqLd.log
MysqL -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';
设置root账号远程访问
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
MysqL 主备搭建
1. 工作原理(http://www.jb51.cc/article/p-zolszqwq-zp.html)
MysqL主备复制实现分成三个步骤:
master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将改变反映它自己的数据。
2 搭建
主创建账号:
create user 'test'@'%' identified by 'r123+-*/';
主 复制账号权限:
grant select,replication slave,replication client on *.* to 'test'@'%' identified by 'r123+-*/';
主 配置my.cnf
vim /etc/my.cnf
log_bin=MysqL-bin
server_id = 1
从配置my.cnf
vim /etc/my.cnf
log_bin=MysqL-bin
server_id = 2
relay_log=MysqL-relay-bin
log_slave_updates=1
read_only=1
(http://www.jb51.cc/article/p-zolszqwq-zp.html)
server_id 是必须的,而且唯一。slave没有必要开启二进制日志,但是在一些情况下,必须设置,例如,如果slave为其它slave的master,必须设置 bin_log。在这里,我们开启了二进制日志,而且显示的命名(默认名称为hostname,但是,如果hostname改变则会出现问题)。
relay_log配置中继日志,log_slave_updates表示slave将复制事件写进自己的二进制日志(后面会看到它的用处)。
有 些人开启了slave的二进制日志,却没有设置log_slave_updates,然后查看slave的数据是否改变,这是一种错误的配置。所以,尽量 使用read_only,它防止改变数据(除了特殊的线程)。但是,read_only并是很实用,特别是那些需要在slave上创建表的应用。
主,从服务重启
service MysqLd restart
主查看信息
show master status\G;
*************************** 1. row ***************************
File: MysqL-bin.000001
Position: 718
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
从启动slave
MysqL> CHANGE MASTER TO
-> MASTER_HOST='test.host.com',-> MASTER_USER='test',-> MASTER_PASSWORD='r123+-*/',-> MASTER_LOG_FILE='MysqL-bin.000001',-> MASTER_LOG_POS=718;
需要的信息根据主的信息配置
从查看状态
show slave status\G
3 验证
在主上插入一行数据,从会有这条数据。
4 配置主读写,从只读
主从分别创建账号:
create user 'test'@'%' identified by 'r123 +-*/';
主账号授权:
grant all privileges on *.* to 'test'@'%' identified by 'r123+-*/';
从账号授权:(这里采用全部授权后,回收修改数据库的权限方式。也可以直接赋权,但是怕有遗漏,影响功能)
grant all privileges on *.* to 'test'@'%' identified by 'r123+-*/';
revoke insert,update,delete,drop,create,alter on *.* from 'test'@'%';
4 jdbc验证
jdbc配置多个MysqL,出现故障时自动切换.
spring.datasource.driver-class-name=com.MysqL.jdbc.Driver
spring.datasource.url=jdbc:MysqL://test.host.com:3306,test-1.host.com:3306/test?failOverReadOnly=true&useSSL=false
spring.datasource.username=test
spring.datasource.password=r123+-*/