centos 搭建mysql,及配置主备

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

查看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 主备搭建

1. 工作原理(http://blog.csdn.net/u013256816/article/details/52536283)

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://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

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+-*/

你可能感兴趣的:(工作日记)