CentOS7下mysql数据库的迁移

CentOS7下mysql数据库的迁移,第1张

想知道你的mysql装在哪里吗?CentOS7一般是装在/var/lib/mysql中的

在完成迁移之前,先用下面的指令来停止mysqld服务

service mysqld stop,或者直接点sudo systemctl stop mysqld

然后用df-h指令看服务器上剩余空间是多少,假设我们新挂了一块500G的硬盘到/data上

那么请把mysql整个文件夹拷贝到/data中,像下面这样:

sudo cp -rf /var/lib/mysql /data/mysql,拷完以后原来的mysql文件夹就可以删除了

然后再修改/etc/my.cnf,这个也是需要su的:

sudo vi /etc/my.cnf

里面有一个字段叫[mysqld],将datadir和socket修改成这样:

datadir=/data/mysql

socket=/data/mysql/mysql.sock

接下来,有的人说要修改/etc/init.d/mysqld,但我的服务器不需要,直接通过

service mysqld start就可以启动SQL服务了,远程也可以连接上,但是:

当你使用终端mysql -u root -p的时候,就会报下面这个错:

Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'

这个时候,你有两种解决办法,一种是造一个软连接

ln -s /data/mysql/mysql.sock /var/lib/mysql/mysql.sock,原因是你已经删掉之前的mysql目录了

另外一种办法,是在/etc/my.cnf下面新建一个新字段:

[mysql]

socket=/data/mysql/mysql.sock

第一种方法不需要重启mysql server,第二种方法需要重启mysql server,

然后,你就可以成功地从终端里进入mysql了

敲黑板,不要在[mysql]下面自做主张地写上datadir=/data/mysql,这样会导致本地命令行登录时报错:Unknown Variable: datadir=/data/mysql

本人博客供参考

网页链接

下载mysql源安装包shell>wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 

安装mysql源shell>yum localinstall mysql57-community-release-el7-8.noarch.rpm 

检查mysql源是否安装成功 

yum repolist enabled | grep “mysql.-community.” 

 

安装MySQL 

yum install mysql-community-server 

启动MySQL服务 

shell>systemctl start mysqld 

查看MySQL的启动状态 

shell>systemctl status mysqld 

开机启动 

shell>systemctl enable mysqld 

shell>systemctl daemon-reload 

修改root本地登录密码 

mysql安装完成之后,在/var/log/mysqld.log文件中给root生成了一个默认密码。通过下面的方式找到root默认密码,然后登录mysql进行修改: 

shell>grep ‘temporary password’ /var/log/mysqld.log 

 

shell>mysql -uroot -p 

mysql>ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘MyNewPass4!’ 

或者: 

mysql>set password for ‘root’@’localhost’=password(‘MyNewPass4!’) 

注意:mysql5.7默认安装了密码安全检查插件(validate_password),默认密码检查策略要求密码必须包含:大小写字母、数字和特殊符号,并且长度不能少于8位。否则会提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements错误 

添加远程登录用户 

默认只允许root帐户在本地登录,如果要在其它机器上连接mysql,必须修改root允许远程连接,或者添加一个允许远程连接的帐户,为了安全起见,我添加一个新的帐户: 

mysql>GRANT ALL PRIVILEGES ON . TO ‘yangxin’@’%’ IDENTIFIED BY ‘Yangxin0917!’ WITH GRANT OPTION

以上部分个人实践过,以下内容待实践

数据库存emoji 表情问题

mysql>SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’ 

+————————–+——————-+ 

| Variable_name | Value | 

+————————–+——————-+ 

| character_set_client | utf8 | 

| character_set_connection | utf8 | 

| character_set_database | latin1 | 

| character_set_filesystem | binary | 

| character_set_results | utf8 | 

| character_set_server | latin1 | 

| character_set_system | utf8 | 

| collation_connection | utf8_general_ci | 

| collation_database | latin1_swedish_ci | 

| collation_server | latin1_swedish_ci | 

+————————–+——————-+ 

10 rows in set (0.02 sec) 

可以看到我的mysql版本是5.7的,utf8mb4有一个使用限制,mysql版本必须是5.5以上,大家需要注意,我目前用的ubuntu系统是16.04的。当前mysql的字符集配置如上表,我们的目的是更改成utf8mb4。 

3.找到mysql的配置文件,可用命令 

sudo find / -name my.cnf 

我的配置文件位置如下,个别的位置有所不同 

/etc/mysql/mysql.conf.d/mysqld.cnf

4.修改配置文件 

在原文中添加以下内容: 

[client] 

default-character-set = utf8mb4 

[mysql] 

default-character-set = utf8mb4 

[mysqld] 

character-set-client-handshake = FALSE 

character-set-server = utf8mb4 

collation-server = utf8mb4_unicode_ci 

init_connect=’SET NAMES utf8mb4’ 

原文件中无“[client]”和“[mysql]”,需要手动添加上。 

……

Here is entries for some specific programs

The following values assume you have at least 32M ram

[client] 

default-character-set = utf8mb4 

[mysql] 

default-character-set = utf8mb4 

[mysqld_safe] 

socket = /var/run/mysqld/mysqld.sock 

nice = 0 

[mysqld] 

#

* Basic Settings

user = mysql 

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

socket = /var/run/mysqld/mysqld.sock 

port = 3306 

basedir = /usr 

datadir = /var/lib/mysql 

tmpdir = /tmp 

lc-messages-dir = /usr/share/mysql 

skip-external-locking 

character-set-client-handshake = FALSE 

character-set-server = utf8mb4 

collation-server = utf8mb4_unicode_ci 

init_connect=’SET NAMES utf8mb4’ 

#

Instead of skip-networking the default is now to listen only on

……

5.重启mysql服务 

sudo service mysql restart

6.查看结果 

mysql>SHOW VARIABLES WHERE Variable_name LIKE ‘character_set_%’ OR Variable_name LIKE ‘collation%’ 

ERROR 2006 (HY000): MySQL server has gone away 

No connection. Trying to reconnect… 

Connection id: 3 

Current database: * NONE * 

+————————–+——————–+ 

| Variable_name | Value | 

+————————–+——————–+ 

| character_set_client | utf8mb4 | 

| character_set_connection | utf8mb4 | 

| character_set_database | utf8mb4 | 

| character_set_filesystem | binary | 

| character_set_results | utf8mb4 | 

| character_set_server | utf8mb4 | 

| character_set_system | utf8 | 

| collation_connection | utf8mb4_unicode_ci | 

| collation_database | utf8mb4_unicode_ci | 

| collation_server | utf8mb4_unicode_ci | 

+————————–+——————–+ 

10 rows in set (0.00 sec)

/bin - 重要的二进制 (binary) 应用程序

/boot - 启动 (boot) 配置文件

/dev - 设备 (device) 文件

/etc - 配置文件、启动脚本等 (etc)

/home - 本地用户主 (home) 目录

/lib - 系统库 (libraries) 文件

/lost+found - 在根 (/) 目录下提供一个遗失+查找(lost+found) 系统

/media - 挂载可移动介质 (media),诸如 CD、数码相机等

/mnt - 挂载 (mounted) 文件系统

/opt - 提供一个供可选的 (optional) 应用程序安装目录

/proc - 特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息

/root - root (root) 用户主文件夹,读作“slash-root”

/sbin - 重要的系统二进制 (system binaries) 文件

/sys - 系统 (system) 文件

/tmp - 临时(temporary)文件

/usr - 包含绝大部分所有用户(users)都能访问的应用程序和文件

/var - 经常变化的(variable)文件,诸如日志或数据库等

Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器

vim /usr/local/etc/keepalived/keepalived.conf

Centos 7

解决办法:

解决办法:

1.删除系统自带数据库

8.重启两台服务器 并配置复制账户

包含两部分 一部分为lib 一部分为fastDFS

3.配置

实验机器IP: 192.168.3.206 192.168.3.207

系统环境:centos 7

(如果 /usr/local/bin/ 文件夹内没有 redis-server 那几个文件,就从 /usr/local/redis-4.0.1/src/ 中拷贝过去,命令:cp redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/)

配置 vm.overcommit_memory 为1,这可以避免数据被截断

使用 ps -ef|grep redis 查看是否都启动成功,IP和端口号都正确

--permanent(必须开集群总线端口,集群总线端口=端口号+10000,例:7000的集群总线端口是17000。这个集群总线端口不开放,集群的时候外部服务器的节点添加不进来)

#彻底关闭防火墙

================================================================================== ====================== 1~9都是要在两台服务器中 *** 作的 =========================== ==================================================================================

说明成功了。

如果是出现 Waiting for the cluster to join........... 一直有 “.”出现,说明另一台服务器的端口策略没通,一直在等那边的节点加入集群,那么恭喜你,要悲剧了.....

CLUSTER NOTES

如果集群要设置密码,集群启动后要在各个节点下设置:

/etc/snmp/snmpd.conf/etc/snmp/snmpd.conf

分别解压两个文件包

修改

编译

配置插件

cd /home/data/bin/fastdfs-nginx-module/src vim mod_fastdfs.conf

复制fastdfs文件

配置nginx

vim /usr/local/nginx/conf/nginx.conf

在web中增加配置

启动

在已经安装过 Nginx 的服务器上安装配置 fastdfs-nginx-module 模块?我们直接进入 Nginx 的存放目录,进行配置后编译,就不需要执行最后安装make install这一步了,接着重启就行了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10648411.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-10
下一篇2023-05-10

发表评论

登录后才能评论

评论列表(0条)

    保存