天天看点

安装MySQL和配置MySQL主从遇到的坑合集

linux下安装MySQL

https://www.cnblogs.com/bookwed/p/5896619.html

https://www.cnblogs.com/duanrantao/p/8988116.html

https://www.cnblogs.com/bookwed/p/5896619.html

网页资料

安装环境 

CentOS7     mysql-5.5.62-linux-glibc2.12-x86_64.tar

安装前的准备

特别注意的是一个阶段配置一个快照如果发现GG还可以回退

安装MySQL和配置MySQL主从遇到的坑合集

安装虚拟机成功配置一下 安装mysql配置一下等等。。总之你越是上心到后面你越轻松。

主从复制原理:

主从复制就是通过主的二进制日志文件  通过io传输到从  然后进行数据同步中间涉及到事务的回滚

sync_binlog=1: Mysql开启bin-log日志使用bin-log时,默认情况下,并不是每次执行写入就与硬盘同步,这样在服务器崩溃时,就可能导致bin-log最后的语句丢失。可以通过这个参数来调节,sync_binlog=N,使执行N次写入后,与硬盘同步。1是最安全的,但是也是最慢的。

如果用到innode 存储引擎:

innodb_flush_logs_at_trx_commit=ON(刷写日志:在事务提交时,要将内存中跟事务相关的数据立即刷写到事务日志中去。)

innodb_support_xa=ON (分布式事务:基于它来做两段式提交功能)

sync_master_info=1:每次给从节点dump一些事件信息之后,主节点的master info 信息会立即同步到磁盘上。让从服务器中的 master_info 及时更新。

总之就是主从之间通过二进制日志文件进行数据传输

开始MySQL安装  两台虚拟机安装效果都要能够启动

Mysql的搭建(不建议网上在线下载安装包)

1.解压mysql安装包到 /usr/local/mysql

tar

-zxvf  mysql.................

复制到local底下的mysql目录

cp

-r mysql-5.6.33-linux-glibc2.5-x86_64 

/usr/local/mysql

2.

#添加用户组

groupadd mysql

#添加用户mysql 到用户组mysql

useradd

-g mysql mysql

3.进入到mysql的安装目录

cd /usr/local/mysql

新建一个data文件夹 用来存储数据

mkdir

.

/data/mysql

4.修改数据库权限 chown -R mysql:mysql ./

5.初始化数据库

./scripts/mysql_install_db --user=mysql --datadir=/usr/local/mysql/data/mysql

6.添加启动服务

cp support-files/mysql.server /etc/init.d/mysqld

7.修改启动脚本

vi /etc/init.d/mysqld

8.修改一个启动服务的地址 一个data的文件路径

 service mysql restart   启动mysql

9.进入到mysql目录,执行添加MySQL配置的操作

cp support-files/my-medium.cnf /etc/my.cnf

或:

cp support-files/my-default.cnf /etc/my.cnf

10.配置环境变量

11.启动 完成!

安装教程网上多的很。。。。。

chown -R mysql:mysql mysql

给整个mysql目录权限

这就完了????

安装MySQL和配置MySQL主从遇到的坑合集

肯定没有

主要这里说明一下安装的坑  只有走过千山绿水  才能万古长存。。。。。。

下面是遇到的坑:

1.Can't connect to local MySQL server through socket '/tmp/mysql.sock'

不能连接mysql      这是远程连接的坑  不是防火墙就是权限,密码

2. ERROR! The server quit without updating PID file (/var/lib/mysql/master.pid).

常见的错误:https://www.cnblogs.com/wangshaojun/p/5065298.html

主要原因是配置文件  。

3.error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.

这是mysql没有日志文件 需要创建一个日志文件目录和一个.log文件

4.远程连接报错 错误码1130       更改linux中mysql中的user表

加一个host为%    后面的 为root

https://blog.csdn.net/liubingger/article/details/80680266

原因:远程连接需要你在user表中加一个谁都可以连接进来,谁都可以操作的权限。

  1. CentOS7的防火墙   他与其他版本的CentOS不一样

CentOS7中需要使用firewalld来关闭防火墙

 参考下面链接https://www.cnblogs.com/moxiaoan/p/5683743.html

  1. 发现启动mysql用service MySQL start 启动不了可以尝试

在mysql安装目录下   

./support-files/mysql.server start   启动

后面加stop就是停止  

7.如果进入mysql找不到发现找不到命令的情况

ln -s  /usr/local/mysql/bin/mysql  /usr/local/bin

因为系统默认会查找/usr/bin下的命令,由于mysql没有在这个目录下,所以出现not found。因此需要做一个软连接到/usr/bin目录下。

  1. 各种配置都配好了 网络状态也可以连接 发现还是远程连接不上的

网上的各种傻逼四连:

一、检查数据库是否打开

二、测试能否ping通数据库主机(另检查数据库是否可以远程连接)

三、检查数据库主机防火墙是否屏蔽了3306端口

四、查看一下数据库的mysql库中user表是否给予了授权

  1. Ifconfig 查看本机ip  如果发现查看不了了

 ip addr  是CentOS7中新查看ip的方法

  1. 启动mysql的时候 提示你重定向的信息

还是环境变量的问题    找不到命令的也是

  1. 如果安装失败 你想铲掉重新再装  ,你需要删除所有有关mysql的文件

如果你只删了mysql安装目录  抱歉 你再装一次肯定GG!!!

原因:中间涉及到了有一些配置文件   比如my.cnf的关联文件  影响的是你下次安装失败!

  1. 错误码,错误提示会给你一个错误的码 下面是我安装遇到的  如果没有你遇到的你也可以百度

1045 不是你用户名错就是密码错   尝试用andmin

2003  mysql没启动!

10060  配置问题   user表 和mysql权限

42000  登陆的时候用了匿名用户  

       在my.cnf 中配置 skip-grant-tables  可以跳过mysql的权限验证

28000  就是密码错误之类的 推荐跳过验证

1201  错误 无法初始化主信息结构

解决办法:stop slave; 中间放更改语句  reset slave;

    2013  重启试一下

  1. my.cnf文件设置以下属性可以跳过mysql的程序验证,但是你靠这个去更改mysql的配置或者表结构,或者配置主从。他会提示你跳过验证的不让更改。

如果你验证登陆会等到一个“”的账号  你会发现你use mysql的库都进不去

skip-grant-tables 

解决方法:直接用客户端连接,到mysql的user表中将其中一条user为root的记录的host改成localhost,然后保存就好了;

配置主从

配置主从的时候 网上资源一大把。主要分两块

Mysql5.5之前 和5.5之后  配置方法不一样   一个是在配置文件中更改 一个是进入mysql之后进行更改。具体的方法就多试几次。看懂一些配置文件搭建非常简单。

个人建议参照多个搭建方法来对照起来

https://blog.51cto.com/13910274/2172910 一整套流程

https://blog.csdn.net/daicooper/article/details/79905660 最简单的一个

https://www.jianshu.com/p/b0cf461451fb

主要介绍一下坑:

1.有时候发现你保存文件无法保存的情况!

   一般保存文件wq就可以直接保存    有时候会让你加wq!  

这样都保存不了的用: w ! sudo tee %   强制保存 不过多半不好使!

 第二种方法 需要更改用户权限

Su root 切换到root的时候  发现权限认证错误

你需要重新定义密码: sudo passwd root  

更改新的密码之后就可以切换到root了

2.如果你的虚拟机关机或挂起状态 网络丢失!

设定里面找不到网络连接的方式  而且百度的时候需要你配置各种静态ip

更改各种设定和配置!如果你之前没有配置过这些东西!

个人建议:

  1. 你先把虚拟机关了!

如果重启之后还是这样   回退快照吧。

如果你没快照,恭喜GG! 铲掉重装!

2.回退到快照你会发现你的网络状态还是那样!  你就进行下面操作

安装MySQL和配置MySQL主从遇到的坑合集
安装MySQL和配置MySQL主从遇到的坑合集

之后你会发现??

安装MySQL和配置MySQL主从遇到的坑合集

好了!

然后会更改你的ip地址   需要重新设定

3.  Mysql安装完成。全程连接可以连接上 但是mysql-uroot-p找不到命令

   根本原因:没有配置mysql的环境变量

可以在bin目录下./mysql -uroot -p  来登陆

4.错误Ignoring query to other database   

  最傻逼的错误 自己百度。

5.Job for mysqld.service failed because the control process exited with error code. See "systemctl status mysqld.service" and "journalctl -xe" for details.

报这个错,他的意思是你配置文件瞎了眼睛乱**写。报错了

  1. 最大的一个坑

主里面设置server_id = 1   从里面设置server_id = 2

你就会发现怎么配置好了还是启动不了

查看 报错信息   在data文件夹下   找一个.err结尾的 日志文件

查看文件得知 报错信息是server-id 从不能和主一样。。。。。

你就会发现在my.cnf文件中最角落一块

安装MySQL和配置MySQL主从遇到的坑合集

文件默认自带了一个server-id的属性  你要给删掉 不然一直

slave_IO_running : no

只有两个都是yes了才算配置成功了

最好的办法就是:若失败查看mysql错误日志中具体报错详情来进行问题定位

安装MySQL和配置MySQL主从遇到的坑合集

然后测试,网上测试方法一大把

最简单的测试你就通过可视化工具在主里面新建一张表,然后到从库里疯狂刷新。3秒钟不出来 你就可以开始砸电脑

遇到坑了就百度,遇到错误看日志。

--如果有有我没讲解到了你还不知道怎么解决 可以评论出来 。

继续阅读