参考官方文档: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安装,则会找不到其他依赖,安装起来比较麻烦。
使用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
查看mysql生成root的默认密码
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主备复制实现分成三个步骤:
master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events,可以通过show binlog events进行查看);
slave将master的binary log events拷贝到它的中继日志(relay log);
slave重做中继日志中的事件,将改变反映它自己的数据。
主创建账号:
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://blog.csdn.net/u013256816/article/details/52536283)
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
在主上插入一行数据,从会有这条数据。
主从分别创建账号:
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+-*/