centos7安装MySQL及配置实现主从同步

1.下载安装:

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm

yum localinstall mysql57-community-release-el7-8.noarch.rpm
(提示进程占用,直接kill就行)

检查mysql源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"
进行安装
yum install mysql-community-server
安装完成后启动一下 看看有什么问题没;
systemctl start mysqld

没啥问题修改密码:
sudo grep 'temporary password' /var/log/mysqld.log
通过上述命令找到你的密码
mysql -uroot -p
输入密码进入修改你的root账号密码

修改完密码退出MySQL,出来修改目录了。

2.修改目录:
由于MySQL的数据存的比较大,需要换个路径储存数据,你不可能把你的所有的数据都放在数据库安装的目录下把,所以我们在data目录下创建一个datamysql目录来专门放MySQL的数据。
*以下操作需要root权限:

mkdir datamysql
mkdir datamysql/mysql
 cp -R /var/lib/mysql/* /data/datamysql/mysql/
 chown -R mysql:mysql /data/datamysql/mysql/
 cp /etc/my.cnf /etc/my.cnf.bak

修改配置文件:


# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[client]
port=3306
socket=/data/datamysql/mysql/mysql.sock
default-character-set=utf8

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/data/datamysql/mysql
socket=/data/datamysql/mysql/mysql.sock

port=3306
explicit_defaults_for_timestamp
skip-host-cache
skip-name-resolve
user=mysql
max_connections=1000
tmp_table_size=512M
max_heap_table_size=512M
read_buffer_size=200M
read_rnd_buffer_size=200M
sort_buffer_size=200M
innodb_log_buffer_size=200M
innodb_buffer_pool_size=16G
character-set-server=utf8
wait_timeout=32000000
interactive_timeout=32000000
net_write_timeout=1800
innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:10G

innodb_file_per_table=1
innodb_print_all_deadlocks=1

# master-slave configuration
server-id=1234
log_bin=mysql-bin
relay_log=mysql-relay-bin
log-slave-updates=on
gtid-mode=on
enforce-gtid-consistency=on
slave-skip-errors=all
max_binlog_size=500M binlog最大文件 超过这个 系统就重生成一个
binlog-do-db=你需要同步的数据库名称
binlog-ignore-db=mysql
binlog-ignore-db=information_schema 忽略同步的数据库,这里面方的是权限,表信息等 这个不需要同步。
binlog-ignore-db=performance_schema

# MTS for master
binlog_group_commit_sync_delay=30
binlog_group_commit_sync_no_delay_count=20

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

修改完成后,使用mysql -uroot -p 登录 在VM虚拟机 我遇到报错,找不到sock.需要进入mysql 的log下查看:
cd /var/log
tail -n 300 mysqld.log
要是你是如下报错:
MySQL [Warning] Can’t create test file xxx lower-test

image.png

假如有这个错误,直接执行下面的命令:

  • 首先关掉MySQL服务:
  • service mysql stop
  • 执行如下命令
  • setenforce 0
  • 重启MySQL服务
  • systemctl start mysqld

[注意]:这个命令你下次开机的时候应该还需要再次执行一次,否则还是抛出上面的异常,假如你不想这么麻烦,可以百度一下永久解决方案。
参考文章链接:
https://www.cnblogs.com/ajianbeyourself/p/4158874.html

这个时候我们关掉MySQL服务,重新启动MySQL,并且查看现在的状态:
``
systemctl status mysqld

image.png

3.登录远程访问(VM虚拟机 centos7):
mysql -uroot -p
输入密码为 进入MySQL
接下来我们开始授权:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'MyNewPass4!' WITH GRANT OPTION; FLUSH PRIVILEGES;
这个命令的意思是myuser这个用户用户可以在任何IP(%代表任何IP),.代表任何表的权限,来访问数据库。

开完之后,执行命令,开机自启动systemctl enable mysqld
systemctl daemon-reload

这个时候不出意外是肯定无法使用navicat进程远程访问的,需要进行一下操作:
1.查看虚拟机IP


image.png

2.本地cmd ping一下


image.png

3.进MySQL 查看你的端口多少
show variables like '%port%';
4.开放3306端口,你的可能不是3306 看配置文件也可以
安装iptables服务
sudo yum install iptables-services

开启服务

sudo systemctl enable iptables 
sudo systemctl enable ip6tables 

启动服务

sudo systemctl start iptables 
sudo systemctl start ip6tables

修改配置文件
vi /etc/sysconfig/iptables
在-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT 后面加这个一行-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
wq保存推出
重启网卡服务
service iptables restart

开始配置主从同步:

1.登陆主数据库,修改密码后,创建一个账号来进行主从同步
grant replication slave on *.* to 'slave'@'从库的IP' identified by '密码';
7.登陆从库 按照上面的迁移目录和修改配置文件都来一套,主要是配置文件里面的service_id不要和从库的重复即可,其他一模一样都可以。

然后开始在从库进行如下操作:

CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_PORT=主库端口, MASTER_USER='slave', MASTER_PASSWORD='刚刚主库的slave密码', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1615;

注意!!!,上面的MASTER_LOG_FILE 和MASTER_LOG_POS 需要你在主库查看再设置,SQL为 在主库运行:show master status\G;

image.png

8.以上配置完成后,再从库进行开启主从同步 执行如下SQL:
start slave;
9.然后在从库:show slave status\G,查看是否正常同步:

image.png

红色框内都是Yes就代表是已经主从设置完成了。

tips:

  • 主从同步的表一定要在设置完主从后再创建,否则是不会同步到从库的。
  • 可以在主库创建需要主从同步的表,写入测试数据,查看是否从库有这些数据。
  • 主从有时候会出现不同步的情况,例如一个超级大的事务,可能导致主从数据不一样,这种情况情况下建议配置为:MTS(Multi-Threaded Slaves),即多线程复制,这样并发量很大,或者有大事务的时候,避免一些延迟情况。
    配置参考:
# MTS for salve
slave-parallel-type=LOGICAL_CLOCK
slave-parallel-workers=4    
master_info_repository=TABLE
relay_log_info_repository=TABLE
relay_log_recovery=ON

参考链接:
https://www.cnblogs.com/MYSQLZOUQI/p/6894464.html

遇到的问题:
1.主库创建的用户在从库服务器无法登陆:
这个应该是你端口问题,直接按照我上面的进行设置就行。
参考资料:
1.https://www.osyunwei.com/archives/566.html
2.https://www.cnblogs.com/ivictor/p/5146247.html
3.https://blog.csdn.net/lliangdd/article/details/52092542
4.https://www.jianshu.com/p/7b8c4dea6829
5.https://www.cnblogs.com/gumuzi/p/5711495.html
6.https://www.cnblogs.com/dump/p/9238543.html
7.https://blog.csdn.net/asd104/article/details/80158147
8.https://segmentfault.com/a/1190000017827680

你可能感兴趣的:(centos7安装MySQL及配置实现主从同步)