Linux重装mysql5.7.21并配置主从同步数据库

新配的服务器, 装的系统是centOS 7 , 同事装的msyql是5.7.23, 后来因为没有配置文件my.cnf, 据说重新安装会比较快,我就开始了坎坷的重装mysql的路程...

1. 先卸载原来已经安装的mysql

1.1查找linux安装的msyql服务

# rpm -qa | grep -i mysql

1.2查找mysql相关的文件夹

# find / -name mysql

1.3停止mysql服务

--停止服务
# service msyql stop

--开启服务
# service mysql start

--查询服务状态
# service msyql status

1.4删除这些服务和文件夹

--删除安装的服务
# rpm -ev MySQL-server-5.7.23-1.linux_glibc2.5

--删除mysql相关的文件夹
# rm -rf /usr/lib64/mysql

检查是否还有没有删除的相关文件1.1 和1.2

2. 安装mysql

官方网站上下载安装包.  我下载的是tar.gz版本5.7.21

2.1 解压要相应的位置, 然而这个版本也没有配置文件, 只能自己DIY了.. 

--很多,我直接复制别人的.. 连接放下面..

--切换到压缩包所在目录
# cd /data/software

--解压压缩包
# tar -xzvf /data/software/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz

--移动并修改文件名
# mv /data/software/mysql-5.7.17-linux-glibc2.5-x86_64 /usr/local/mysql

2.2 创建数据仓库目录

--/data/mysql 数据仓库目录
# mkdir /data/mysql   

--查询本目录包含的文件和文件夹      
# ls /data/

2.3 新建组及用户及目录

--新建一个msyql组
# useradd -r -s /sbin/nologin -g mysql mysql -d /usr/local/mysql     ---新建msyql用户禁止登录shell

2.4改变目录属有者(改变权限)

# cd /usr/local/mysql
# pwd
# chown -R mysql .
# chgrp -R mysql .

# chown -R mysql /data/mysql

2.5 初始化配置

--配置参数并初始化
# bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

Linux重装mysql5.7.21并配置主从同步数据库_第1张图片

别人的图.. 会出现以上的画面, 注意最后一行, root@localhost: 后面的是临时密码. 记好.

-- 指定数据位置
# bin/mysql_ssl_rsa_setup  --datadir=/data/mysql

2.6 修改配置文件

如果版本低的话, 会有mysql-->support-files-->my-default.cnf文件, 拷到 root目录下的etc文件夹里.

如果版本高的话, 没有这个文件, 自己新建一个记事本, 修改名字为my.cnf  内容如下:


# 文件里的内容  #是注释 一些路径根据自己实际填写
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.

[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 = 10G

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
log_bin
character-set-server=utf8
collation-server=utf8_bin
init-connect='SET NAMES utf8'
# These are commonly set, remove the # and set as required.
# 根据自己实际填写, mysql安装目录
basedir = /usr/local/mysql
# 根据自己实际填写, mysql数据所在位置
datadir = /export/mysql/var
port = 3306
# 如果要设置主从, 这个id要唯一
server_id = 22206
socket = /export/mysql/mysql.sock
binlog_format = statement
# 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
log_bin_trust_function_creators = on
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

lower_case_table_names=1

2.7 修改后启动mysql

# /etc/init.d/mysql start

注意: 一般情况下, 这里会报错, pid的问题. 如果你的目录里有pid, 还是报pid的错误, 

就参考以下链接, 执行以下步骤: https://blog.csdn.net/zalion/article/details/9274263

pid是根据本机在初始化的时候自动生成的文件, 如果文件夹里压根就没有自动生成, 就执行以下步骤自已生成一个pid文件.

--重新构造pid文件
# ps -ef|grep mysqld|awk '{print $2}'|sed 1d |sed 2d > ${HOSTNAME}.pid

要注意文件所在目录要和配置文件里的目录保持一致...

再次启动mysql

如果pid能解决, 基本就会启动成功. 

2.8 登陆mysql

# mysql -hlocalhost -uroot -p

--如果出现:-bash: mysql: command not found 就执行: 
# ln -s /usr/local/mysql/bin/mysql /usr/bin --没有出现就不用执行

2.8.1输入之前生成的临时密码.

如果之前的页面没了.. 也没记, 可以执行以下步骤获取:

-- 日志文件默认位置
# cat /var/log/mysqld.log

能够看到一行信息,例如我的是:
2017-11-29T01:55:23.192210Z 1 [Note] A temporary password is generated for root@localhost: Q5Sck93kdK/*

localhost: 后面的一串就是你mysql登录的初始密码。

如果真的找不到参考以下链接, 跳过密码重新设置, 反正我没成功, 我是使用临时密码成功的..

https://blog.csdn.net/lisongjia123/article/details/57418989

2.8.2 修改密码, 并设置远程连接

--修改密码
mysql> set password=password('root');

--设置root账户的host地址(修改了才可以远程连接)
mysql>grant all privileges on *.* to 'root'@'%' identified by 'root';
mysql>flush privileges;

--查看表操作
mysql> use mysql;
mysql> select host,user from user;

2.8.3 添加系统路径

# vim /etc/profile
--添加如下行, 路径为安装路径的bin目录
export PATH=/usr/local/mysql/bin:$PATH

-- 退出后更新加载配置文件
# source /etc/profile

2.8.4 配置mysql自动启动

# chmod 755 /etc/init.d/mysql
# chkconfig --add mysql
# chkconfig --level 345 mysql on

安装结束.

参考文档:

https://www.cnblogs.com/jr1260/p/6590232.html

https://blog.csdn.net/zalion/article/details/9274263

https://blog.csdn.net/ljm15832631631/article/details/79498961

https://blog.csdn.net/maosilu_ice/article/details/78662847

https://blog.csdn.net/aa464971/article/details/52976230

3. 配置主从同步数据库(只同步其中一个数据库, 没有全部同步)

系统: centOS 7 

mssql: 5.7.21

主ip: 192.168.1.11               从ip:192.168.1.12

3.1  配置主数据库

3.1.1 修改主服务器的mysql配置文件 my.cnf, 添加以下字段

# id唯一标识, 表示主服务器,
server_id=1          

# 开启二进制日志
log-bin=mysql-bin

#表示同步哪个数据库, 没有该字段全数据库
binlog-do-db=oa

3.1.2 给从服务器创建访问用户

# 用户:mysql12   密码:mysql12
mysql>GRANT REPLICATION SLAVE ON *.* TO ‘mysql12’@’192.168.95.12’ IDENTIFIED BY ‘mysql12’;

mysql>FLUSH PRIVILEGES;

或者创建完用户, 重启mysql服务, 我在重启的时候出现了问题.. 

ERROR 1794 (HY000): Slave is not configured or failed to initialize properly. You must at least set –server-id to enable either a master or a slave. Additional error messages can be found in the MySQL error log.

而且这个报错日志里是没有的.. 

https://blog.csdn.net/aa464971/article/details/52976230

根据这个, 把配置文件删除了重新启动才解决.. 注意备份!

3.1.2  查看192.168.95.11MySQL服务器二进制文件名与位置

mysql>SHOW MASTER STATUS;

注意: 记下File 和Position字段的值

3.2 配置从服务器

配置文件my.cnf添加以下字段:

server_id=2

登陆mysql,执行以下步骤:

mysql>CHANGE MASTER TO
     >MASTER_HOST=’192.168.95.11’,            --主服务器ip
     >MASTER_USER=’mysql12’,                  --创建的用户名
     >MASTER_PASSWORD=’mysql12’,              --密码
     >MASTER_LOG_FILE=’mysql-bin.000048’,     --主服务器查询的 File  
     >MASTER_LOG_POS=432;                     --主服务器查询的 Position

3.3  开启同步

mysql>start slave;

3.4 查看slave状态: 

-- 重点看slave_io_running:yes 和 slave_sql_running:yes
mysql>show slave status\G 

如果都为yes就成功了。

如果io的显示connecting,则有三种情况:1.网络不通,2.pos不对,3.同步密码错误

如果sql显示no,有两种情况:1.程序可能在slave上进行了写操作,2.slave机器重启后,事务回滚造成的

3.5 测试主从设置是否成功

在主数据库里添加表和字段.. 看从数据库里是否跟着更新.. 如果更新表示主从同步成功. 

 

 

参考:

https://blog.csdn.net/small_33/article/details/78978415

https://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label0

你可能感兴趣的:(遇到的问题,查阅教程)