mysql主从复制

mysql搭建主从复制

1、下载资源包

下载mysql,然后上传到服务器,解压到目录下

/opt/software/mysql

2、建立mysql用户组和用户

groupadd mysql
useradd -m -g mysql mysql

3、修改文件所属用户用户组

data文件夹,用来存放mysql的数据

cd /
mkdir data
chmod -R 777 data

4、创建my.cnf配置文件

进入到/opt/software/mysql下,新建my.cnf

cd /opt/software/mysql && touch my.cnf

配置文件如下

[client]
# 配置端口
port=3306
# 配置sock位置
socket=/data/mysql/data/mysql.sock
default-character-set=utf8

[mysql]
no-auto-rehash
default-character-set=utf8

[mysqld]
port=3306
character-set-server=utf8
# 配置sock位置
socket=/data/mysql/data/mysql.sock
basedir=/data/mysql
# 配置数据位置
datadir=/data/mysql/data
##设置server_id,同一局域网中需要唯一
server_id=101
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
##开启二进制日志功能
log-bin=mysql-bin
##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式 (mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

[mysqld_safe]
open-files-limit=10240
# 配置错误日志位置
log-error=/data/mysql/logs/log_error.log
pid-file=/data/mysql/data/mysql.pid

5、初始化mysql

mkdir /data/mysql
cd /data/mysql
mkdir mysql-files
chown mysql:mysql mysql-files
chmod 750 mysql-files

# 创建logs文件夹,在mysql04的目录下面
mkdir logs 
chmod 777 -R logs

始化,之后临时密码会在log_error.log中生成,在mysql04bin目录下执行,初始化的参数要和配置文件的一致

cd /opt/software/mysql/bin

初始化

./mysqld --initialize --user=mysql \
--basedir=/data/mysql \
--datadir=/data/mysql/data \
--log-error=/data/mysql/logs/log_error.log \
--pid-file=/data/mysql/data/mysql.pid \
--socket=/data/mysql/data/mysql.sock \
--port=3306

6、启动服务

cd /opt/software/mysql/bin

第一种,指定配置文件(推荐)

./mysqld_safe \
--defaults-file=/opt/software/mysql/my.cnf \
--user=mysql

7、登录服务

其中成功之后换一个登录终端,在mysql04目录下的bin文件执行

cd /opt/software/mysql/bin

登录

./mysql -uroot -P3306 -S /data/mysql/data/mysql.sock -p

这时候提示输入密码,输入上面在log_error.log中的密码,之后就登录成功了

这个时候更改密码

ALTER USER root@localhost IDENTIFIED BY '123456';

刷新配置

flush privileges;

退出

exit

8、修改远程登录

update mysql.user set host = "%" where user = 'root';

修改之后,那么就可以远程登录到服务器的mysql

9、配置从机

配置从机的内容跟1~8步大概一致,唯一的区别就是my.cnf修改如下

[client]
# 配置端口
port=3306
# 配置sock位置
socket=/data/mysql/data/mysql.sock
default-character-set=utf8

[mysql]
no-auto-rehash
default-character-set=utf8

[mysqld]
port=3306
character-set-server=utf8
# 配置sock位置
socket=/data/mysql/data/mysql.sock
basedir=/data/mysql
# 配置数据位置
datadir=/data/mysql/data
##设置server_id,同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
##开启二进制日志功能
log-bin=mysql-bin
##设置二进制日志使用内存大小(事务)
binlog_cache_size=1M
## 设置使用的二进制日志格式 (mixed,statement,row)
binlog_format=mixed
##二进制日志过期清理时间。默认值为0,表示不自动清理
expire_logs_days=7
## 跳过主从复制中遇到的所有错误或指定类型的错误,避免slave端复制中断##如:1062错误是指一些主键重复,1032错误是因为主从数据库数据不一致
slave_skip_errors=1062

## relay_log配置中继日志
relay_log=mysql-relay-bin
## log_slave_updates表示slave将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读 (具有super权限的用户除外)
read_only=1


[mysqld_safe]
open-files-limit=10240
# 配置错误日志位置
log-error=/data/mysql/logs/log_error.log
pid-file=/data/mysql/data/mysql.pid

10、主机配置数据同步用户

登录主机之后,执行以下命令

create user 'slave'@'%' identified by '123456';
grant replication slave, replication client on *.* to 'slave'@'%';

11、查看主机状态

登录主数据库,查看主从的状态

SHOW master status;

12、登录从机,查看复制状态

show slave status;

此时未开始同步,所以为空

13、配置从机主从复制

配置复制的服务器和端口等信息。由11步的数据而来。

change master to master_host='192.168.246.145',master_user='slave',master_password='123456',master_port=3306,master_log_file='mysql-bin.000001',master_log_pos=1498,master_connect_retry=30;

14、从机再次查看主从复制状态

show slave status \G

mysql主从复制_第1张图片

15、从机开始主从复制

start slave;

查看主从复制状态

show slave status \G

mysql主从复制_第2张图片

至此,主从复制搭配成功。

你可能感兴趣的:(mysql,数据库,java)