下载mysql,然后上传到服务器,解压到目录下
/opt/software/mysql
groupadd mysql
useradd -m -g mysql mysql
建data
文件夹,用来存放mysql
的数据
cd /
mkdir data
chmod -R 777 data
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
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
中生成,在mysql04
的bin
目录下执行,初始化的参数要和配置文件的一致
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
cd /opt/software/mysql/bin
第一种,指定配置文件(推荐)
./mysqld_safe \
--defaults-file=/opt/software/mysql/my.cnf \
--user=mysql
其中成功之后换一个登录终端,在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
update mysql.user set host = "%" where user = 'root';
修改之后,那么就可以远程登录到服务器的mysql
了
配置从机的内容跟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
登录主机之后,执行以下命令
create user 'slave'@'%' identified by '123456';
grant replication slave, replication client on *.* to 'slave'@'%';
登录主数据库,查看主从的状态
SHOW master status;
show slave status;
此时未开始同步,所以为空
配置复制的服务器和端口等信息。由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;
show slave status \G
start slave;
查看主从复制状态
show slave status \G
至此,主从复制搭配成功。