CentOS 7 mysql启动后找不到mysql.sock

CentOS 7 新的软件管理器叫:systemctl 假如定义的mysql脚本启动方式如下所示,mysql.cnf里配置的socket=/tmp/mysql.sock

参数

是的,若有此参数设为true你的sock文件会被放到/tmp/private-XXXXX/tmp/mysql.sock

将此参数设为false就可以修正

MySQL互为主从,备份数据

对于网站而言,最珍贵的莫过于网站的数据。网站程序什么的,一般本地都会有备份,但数据库不可能也有备份吧。如果数据库里的数据丢失。。。我只能说呵呵了…

备分可以写一个脚本每天导出,并发送邮件,这样的备分针对小型的数据库是没有问题的,数据太大就不太好。。。并且如果服务器挂了恢复也不太容易,最好的备份方法是MySQL同步备份。两台MySQL服务器,设置为主从关系,保持两台MySQL的数据一致。这样就算挂掉了其中的一台,也能非常快启用另一台,损失就可能减小到最小。还有一个办法设置为互为主从的关系,两台MySQL服务器可以互相拷贝,两台服务器同时都可以读写,一台作为备机,一台作为常常使用的。

配置:

两台SQL服务器分别命名为A 和 B,两台服务器的版本最好是一样的,环境也最好相同。比如都在centos 6.5上运行,并都使用同一个版本。笔者配置是在CentOS 6.5上使用Mariadb 10.0.10

如何安装 Mariadb 10.0.10 参考:编译安装 Mariadb 10.0.10

两台服务器都同时安装了Mariadb,并且检查监听的端口及两台面服务器是否能互通。

在A服务器上使用 mysql -h<B的IP> -uroot -p 连接B的数据库,要能正常连接

在B服务器上使用mysql -h<A的IP> -uroot -p 连接A的数据库,要能正常连接

若不能正常连接,检查防火墙和监听的端口是不是正确,要保证能连上才能进行下一步

为两部服务器增加复制的帐号:

在A服务器上执行:

在B服务器上执行:

增加的帐号用于数据同步时,两部服务器互相登录使用。

修改配置文件:

停止两部机器的 mysql

修改A服务器的配置文件,加入如下内容:

修改B服务器的配置文件,加入如下内容:

我们是互为主从的配置,所以配置文件里既有为主时,需要写binlog的db的配置,又有为从时要复制的数据库的配置。注意要区别开

准备同步(设置A -> B的同步):

启动A机器的MySQL,并在A机器执行如下命令用来锁住 A 的数据库只能读:

锁住之后,以最快的速度复制 mysql 的数据文件一份到任意目录。

数据文件主要包含需要同步的数据库文件夹,在数据库不多的情况下,可以全部复制。关于mysql自带的mysql信息库,根据需求进行判断是否需要复制这些信息。

然后执行如下命令查看 状态:

记下File和Position的值,要B机器上要用的

然后执行如下命令,恢复数据库正常访问:

将复制出来的MySQL数据文件,打包发送到B服务器上,直接将B服务器上的MySQL数据文件覆盖掉,这样就保证A和B的数据文件是一致的。

启动B机器的 MySQL服务,进入MySQL执行如下命令:

在以上信息中,看到以下三项表示成功  :

若出现错误,可以在如下两项看到错误的信息

根据错误排除掉之后,就可以了

准备同步(设置B -> A的同步):

在B服务器上进入MySQL并执行:

同样的记下上面的File与Position的值

在 A 服务器上设置 master :

排错方法与在B服务器排错的方法一致。

如果某一台因为断电,或者别的什么原因挂掉,没关系你再次启动起来会自动同步。并且此设置只需要设置一次即可以,当下次启动MySQL的时候,会自动启用同步。。。

若发现没有同步使用show slave status \G 查看一下状态,是否有出错。再根据 Last_IO_Error 排除错误即可。

 

sync_binlog :这个参数对于MYSQL来说非常的重要,影响性能损耗还影响到数据的完整性。

当值为 0 时,事务提交之后,MySQL不做磁盘同步指令刷新 binlog_cache 中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者cache满了之后才同步到硬盘。

当值为n ( n 大于 零),提交 n 次事务后,MySQL将进行一次磁盘同步,将binlog_cache中的数据强制写入磁盘。

很明显,这个参数决定了性能与损耗之间的反比关系。

n为最小值0时,性能是最好的,但系统一旦崩溃那么将损失部分binlog数据,至于损失多少,就要看缓存了多少binlog了

当n为1时,性能损耗是最大的,但如果系统崩溃,至多损失崩溃时那一条binlog数据

按常理来说,系统应该不会那么容易崩溃,一般设置为0,0也是系统默认值。

停止 Slave 并关闭:

 

 

编译安装 Mariadb 10.0.10

Mariadb,传说是MySQL的替代品,在CentOS 6.5上试装运行

试了一下,效率是要比MySQL更高,但也更费内存

编译:

上述cmake失败,需要删除当前目录的文件,重新解压一个再次编译

添加用户:

编辑 /etc/my.cnf:

初始化数据库:

看到 Starting MySQL. SUCCESS! 表示安装成功

若安装失败则在 log-error 这个文件里找错误

MySQL连接查询

从查询结果中再次查询筛选:

单列拼接:


替换拼接字符串:

将查询的结果中 重复 的记录 去掉,只剩一条记录,然后再拼接:

多列拼接,同一行的先拼接,再加上逗号,接着拼接下一行 :