问题描述:工作中要部署一个linux+django+mysql+apache框架的后台网站测试环境,给业务测试人员使用
环境工具:目标服务器工具(虚拟机centOS6.0,python2.6,MySQL5.1,django1.2.4,Apache2.2)
目标服务器空间
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 31G 18G 12G 66% /
tmpfs tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 ext4 485M 30M 430M 7% /boot
/dev/mapper/VolGroup-lv_home ext4 31G 144M 29G 2% /home
源服务器工具(Debian 6.0,python2.6,MySQL5.1,django1.2.4,Apache2.2)
解决过程:1. 由于正式环境中的数据库有10多个库,800多张表,但是测试环境只用cada1,cada2两个库(200张表左右),django应用中首先要能检查到所有库和表的存在,因此要将无数据的数据库结构倒出来到目标MySQL服务器中
使用
mysqldump -u root -p -d --add-drop-table -all-databases > /home/haokuan/datastruct.sql
sql文件大小为4.34M,将结果在目标上source即可。
2. 导出cada1库中所有表的具体数据
使用
mysqldump -u root -p --add-drop-table cada1 > /home/haokuan/cada1.sql
sql文件大小为1.5G左右;
导出cada2库中80张表(大概占1/3,其余为备份表)的具体数据
使用
mysqldump -u root -p --add-drop-table --exclude=cada2.table1 --exclude=cada2.table2 --exclude=cada2.table3 ... cada2 > /home/haokuan/cada2.sql
sql文件大小为19G左右
3. 在源服务器上,计算/var/lib/mysql/cada1,/var/lib/mysql/cada2的大小
使用
du -sh /var/lib/mysql/cada1 du -sh /var/lib/mysql/cada2
cada1文件夹下的*.frm,*.MYD,*.MYI文件接近2G,cada2文件夹大小接近21G
4. 目标服务器的MySQL datapath=/var/lib/mysql,但是挂载在 / 的空间只剩下12G,空间不够,而挂载在/home的空间有29G,比较充足,但是通过scp命令将数据sql文件从源服务器放到目标服务器上面,也需要20G左右的空间,经过检查发现源服务器上挂载在 / 的空间,可以清理垃圾,
使用tar命令将/目录下的一些数据文件压缩,rm -rf将垃圾清理掉,使用vi将my.cnf中的
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
改为
datadir=/home/mysql
socket=/home/mysql/mysql.sock
使用mv将/var/lib/mysql下面的东西转移到/home/mysql
使用scp haokuan@192.168.7.10:/home/haokuan/data.tar.gz /var/lib/mysql/
5. 重启mysql,报错
130729 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
130729 13:34:15 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
130729 13:34:15 mysqld_safe mysqld from pid file /usr/local/mysql/var/mail.bmitwap.com.pid ended
130729 13:38:35 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var
datadir=/home/mysql
转移sql datapath时候,造成文件缺失
使用/usr/bin/mysql_install_db --user=mysql --datadir=/home/mysql重新生成相关文件
使用/usr/bin/mysqld_safe --datadir=/home/mysql --socket=/home/mysql/mysql.sock --pid-file=/var/run/mysqld/mysqld.pid --basedir=/usr --user=mysql 启动mysql 成功
但是mysql命令连接服务器时候报错
Can 't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock '
在修改my.cnf时候,已经修改了socket路径,不知道为什么报错,但是可以使用
ln -s /home/mysql/mysql.sock /var/lib/mysql/mysql.sock 做一个软链接
6. 导入数据之前,想起头一次导入整个库的数据,应该注意字符集问题
源服务器上
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
目标服务器上
mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | latin1_general_ci |
| collation_database | latin1_general_ci |
| collation_server | latin1_general_ci |
+----------------------+-----------------+
mysql> show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | latin1 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
源服务器的存储字符集和连接字符集都是utf8,目标服务器需要修改配置,修改my.cnf文件,
[mysqld]
datadir=/home/mysql
socket=/home/mysql/mysql.sock
user=mysql
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
--------------------------------------------------------------
改为
[mysqld]
datadir=/home/mysql
socket=/home/mysql/mysql.sock
user=mysql
default-character-set=utf8
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
default-character-set=utf8
[client]
default-character-set=utf8
--------------------------------------------------------------
其中default-character-set=utf8将character_set_server和character_set_system改为utf8,其余的是Mysql连接和查询字符集,由default-character-set=utf8决定,字符集改完了,使用screen做后台服务导数据
7. 期间,由于空间不足问题,我新增了一块16G的硬盘,重启linux后,fdisk看到新增设备sdb
使用mkfs -t ext4 /dev/sdb
使用mount /dev/sdb /home/mysql
使用df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 31G 28G 1.3G 96% /
tmpfs tmpfs 499M 0 499M 0% /dev/shm
/dev/sda1 ext4 485M 30M 430M 7% /boot
/dev/mapper/VolGroup-lv_home ext4 31G 23G 6.7G 77% /home
/dev/sdb ext4 16G 172M 15G 2% /home/mysql
最后想起/home/mysql如果满了,也不会向上扩展使用父文件夹/home挂载的设备的空间,用不上,
使用umount /dev/sdb卸载掉
相关推荐
标题“mysql导数据到oracle”涉及的是数据库迁移或数据同步的过程,从MySQL数据库系统将数据迁移到Oracle数据库系统。在IT行业中,这种操作通常用于升级数据库系统、整合多个数据库或者在不同平台间转移数据。 描述...
在使用 DataX 将数据从 Hive 表导入 MySQL 表的过程中,遇到了数据缺失的问题。具体表现为,在某些特定条件下(如数据块大小超过 256M 时),导入到 MySQL 的数据量少于预期。 #### 现象分析 根据观察发现,当数据...
与 SELECT INTO OUTFILE 相反,LOAD DATA INFILE 不能导入表结构,仅限于导入数据。此外,它也只能一次处理一个表,并且需要手动指定字段分隔符、行分隔符等参数,以确保数据导入的准确性和完整性。 在实际应用中,...
- 在SQL Server中创建目标数据库,并使用`OPENQUERY`函数从MySQL导入数据。例如: ```sql SELECT * INTO testMySQl.dbo.apply FROM OPENQUERY (MySQLtest ,'select * from milestone.apply') ``` - 注意,这种...
5. **导入数据**:执行导入操作,将Excel文件中的数据批量写入MySQL表。此过程可能涉及数据校验、冲突处理(如主键冲突)等。 6. **验证结果**:导入后,通过查询MySQL数据库来检查数据是否完整且准确。 使用这样...
`LOAD DATA INFILE` 是MySQL提供的一个高效的数据导入工具,它能够快速地从CSV或其他文本文件中导入数据。例如,如果你有一个名为`data.csv`的文件,你可以使用以下语句: ```sql LOAD DATA INFILE 'data.csv' ...
使用 `source` 命令导入数据的基本步骤如下: 1. 首先登录 MySQL: ```bash mysql -u 用户名 -p ``` 2. 选择要导入数据的数据库: ```sql USE 数据库名; ``` 3. 执行 `source` 命令: ```sql SOURCE 脚本...
【知识点详解】 ...同样,导入数据时也需调用`mysql`命令,并确保所有相关的环境变量和权限设置都已就绪。通过这种方式,Java可以作为强大的工具,帮助我们在应用程序中集成数据库的备份和恢复功能。
### MySQL数据导入与导出详解 在数据库管理与维护中,数据的导入与导出是一项基本而重要的操作,尤其在MySQL这种广泛使用的数据库系统中。本文将深入探讨MySQL数据导入与导出的方法,通过实际案例解析,帮助读者...
- **预分区**: 在导入数据前预先创建好分区,避免在导入时动态创建分区的开销。 **4. 数据一致性与错误处理** - **事务处理**: ClickHouse不支持事务,因此在数据同步过程中需要注意数据的一致性问题,尤其是在...
9. **备份与恢复**:了解如何使用MySQL的备份和恢复机制,比如使用mysqldump工具进行数据导出,或者使用source命令导入数据。 10. **安全性**:学习如何设置用户权限,理解GRANT和REVOKE命令,以及如何创建和管理...
- SQL Developer会自动将数据导入到该用户下,如果该用户不存在,则会自动创建用户并导入数据。 - 默认情况下,SQL Developer创建的Oracle用户默认表空间是`USERS`。为了避免`USERS`表空间溢出,建议预先创建用户...
在本场景中,我们关注的是如何利用Logstash将MySQL数据库中的数据高效地导入到Elasticsearch(ES)中。这个过程通常涉及到几个关键步骤和技术组件,包括配置Logstash的输入、过滤和输出插件,以及确保正确引入必要的...
本篇文章将详细讲解如何利用Python工具实现Excel数据的批量导入到MySQL数据库,以及如何优化这一过程,使得几千万的数据能够在半小时内完成导入。 首先,我们需要了解Python中用于操作Excel的主要库——pandas。...
对应于`mysqldump`,MySQL提供了`mysqlimport`工具来导入数据。在PHP中,你可以通过执行shell命令来调用它,如下所示: ```php $command = "mysqlimport --user=root --password=mypassword --local mydatabase ...
标题中的“利用Flume将MySQL表数据准实时抽取到HDFS、MySQL、Kafka”是一项数据集成任务,涉及Apache Flume、MySQL数据库、Hadoop Distributed File System (HDFS) 和Apache Kafka这四个关键技术。Flume是Apache的一...
描述中提到的“可直接导入数据库”,意味着这个文件(ChinaCity.sql)是一个SQL脚本文件,可以直接在MySQL数据库中执行以创建相应的数据表。这种方式非常便捷,避免了手动输入大量数据的繁琐工作。同时,数据表中的...
- 在导入数据向导中,选择数据源为“ODBC”,然后在“提供程序”下拉框中选择“Microsoft OLE DB Provider for ODBC Drivers”。 - 在“连接”页,输入之前创建的ODBC数据源名称。 - 选择要导入的表,可以是单个...