centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.42方案

整体方案:

环境准备,在备用服务器安装mysql5.5数据库



1、停用生产环境的应用访问

直接修改web的访问端口,避免在更换过程中有人访问

Listen  1888



2、停用数据库服务并备份数据库

# /opt/lampp/lampp stopmysql

# cd /opt/lampp/var/mysql

# cp -r TD_OA TD_OA20160409

将备份文件上传到目标服务器8.68





3、添加系统自动添加账号的函数





4、修改原8.200的IP为8.201,备机服务器8.68IP更换为8.200

修改前端数据库连接

/opt/lampp/htdocs/MYOA/webroot/inc/oa_config.php





5、启动mysql服务,测试能否正常连接

# service mysqld start





6、测试常用的流程,把之前修改的前端listen端口该回来成8888,恢复访问





7、启用数据库同步

具体实施步骤

一、安装cmake编译工具和依赖环境

跨平台编译器

查看是否已经安装了gcc

# rpm -qa | grep gcc

# yum install -y gcc-c++

# yum install -y cmake

# yum install -y git

解决依赖关系

# yum install readline-devel zlib-devel openssl-devel



Warning: Bison executable not found in PATH

 

解决方法:

#  yum install -y bison

再次编译即通过

二、编译安装mysql-5.5.48

# tar xf mysql-5.5.48.tar.gz

# cd mysql-5.5.48

# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mydata -DSYSCONFDIR=/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DWITH_SSL=system -DWITH_ZLIB=system -DWITH_LIBWRAP=0
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci



# make && make install



编译报错需要删除编译缓存

rm CMakeCache.txt

三、新建存放Mysql数据库文件的逻辑卷并挂载到/data/mydata下

分区

# fdisk /dev/sda

n

p

3

+20G

w





#挂载系统分区

# kpartx -l /dev/sda

# kpartx -af /dev/sda

# partx -a /dev/sda

验证是否挂载成功

# cat /proc/partitions

创建物理卷

# pvcreate /dev/sda3

创建名为myvg的卷组

# vgcreate myvg /dev/sda3

#创建一个大小为15G,名字叫做mylv的逻辑卷

# lvcreate -L 15G -n mylv myvg

格式化

# mke2fs -t ext4 -b 2048 /dev/myvg/mylv





# mkdir -pv /data/mydata

mkdir: created directory ‘/data’

mkdir: created directory ‘/data/mydata’

# mount /dev/myvg/mylv /data/mydata

# vim /etc/fstab

添加如下内容:

/dev/myvg/mylv /data/mydataext4defaults,noatime 0 0

四、创建Mysql用户

添加mysql用户指定组id和用户id为306

# groupadd -r -g 306 mysql

# useradd -g mysql -r -g 306 -s /sbin/nologin mysql

# id mysql

uid=994(mysql) gid=306(mysql) groups=306(mysql)





改变数据存储目录和安装目录的权限

# cd /usr/local/mysql

添加存放日志的目录

# mkdir /data/binlogs

# chown -R :mysql ./*

# chown -R mysql.mysql /data/mydata

五、启动脚本初始化数据库

# scripts/mysql_install_db --user=mysql --datadir=/data/mydata^C

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

# cp support-files/my-large.cnf /etc/my.cnf



编辑/etc/my.cnf配置,加入以下内容



innodb_file_per_table = ON

datadir = /data/mydata

log-bin=/data/binlogs/mysql-bin





把mysqld服务加入到启动项

# chkconfig --add mysqld

# chkconfig --list mysqld





将mysql命令加入环境变量中

vim /etc/profile.d/mysql.sh

加入

export PATH=/usr/local/mysql/bin:$PATH





启动mysqld服务

# service mysqld start

报错

Starting MySQL. ERROR! The server quit without updating PID file (/data/mydata/oadb-test.pid).

# ss -tnl



可以观察日志/data/mydata/oadb-test.err,是日志创建权限的问题

# chown -R mysql.mysql /data

六、上传通达OA数据库并配置相关权限

上传通达OA数据库到服务器上,修改权限,并重启服务,测试



# chown -R mysql.mysql /data/mydata

# service mysqd restart



对mysql数据库用户进行清理,加密码

mysql> use mysql

Database changed

mysql> select user,host,password from user;

+------+-----------+----------+

| user | host      | password |

+------+-----------+----------+

| root | localhost |          |

| root | adb-test  |          |

| root | 127.0.0.1 |          |

| root | ::1       |          |

|      | localhost |          |

|      | adb-test  |          |

+------+-----------+----------+

6 rows in set (0.01 sec)



mysql> delete from user where user='' and host='localhost';

Query OK, 1 row affected (0.01 sec)



mysql> delete from user where user='' and host='adb-test';

Query OK, 1 row affected (0.00 sec)

设置其中root密码为myoa888,并对服务器IP限制

mysql> update user set password=PASSWORD('myoa888'),host='192.168.11.144' where user='root' and host='::1';

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0



对root用户加密

mysql> update user set password=PASSWORD('13C1325E831DEC8D60') where user='root' and host in('localhost','adb-test','127.0.0.1');

mysql> select user,host,password from user;

+------+----------------+-------------------------------------------+

| user | host           | password                                  |

+------+----------------+-------------------------------------------+

| root | localhost      | *CF51F9E245F41378E51B4154082F26108A5B0D63 |

| root | adb-test       | *CF51F9E245F41378E51B4154082F26108A5B0D63 |

| root | 127.0.0.1      | *CF51F9E245F41378E51B4154082F26108A5B0D63 |

| root | 192.168.11.144 | *91AF99F23C3D4ED85140D100433725DFA52BECEE |

+------+----------------+-------------------------------------------+

后续的功能增强:

一、关于数据库交互函数的设置:

①OA数据库设置

TD_OA

字符集gbk -- GBK Simplified Chinese

排序规则gbk_chinese_ci

②建立编码表

CREATE TABLE `cs_char2letter` (              

                  `PY` char(1) character set utf8 NOT NULL,  

                  `HZ` char(1) NOT NULL default '',          

                  PRIMARY KEY  (`PY`)                        

                ) ENGINE=InnoDB DEFAULT CHARSET=gbk;

③插入

truncate table cs_char2letter;

set names gbk;

insert into cs_char2letter values

('A','骜'),

('B','簿'),

('C','错'),

('D','鵽'),

('E','樲'),

('F','鳆'),

('G','腂'),

('H','夻'),

('J','攈'),

('K','穒'),

('L','鱳'),

('M','旀'),

('N','桛'),

('O','沤'),

('P','曝'),

('Q','囕'),

('R','鶸'),

('S','蜶'),

('T','箨'),

('W','鹜'),

('X','鑂'),

('Y','韵'),

('Z','咗');

④建立函数

DELIMITER $$

DROP FUNCTION IF EXISTS `test`.`func_get_first_letter`$$





CREATE DEFINER=`root`@`localhost` FUNCTION `func_get_first_letter`(words varchar(255)) RETURNS char(1) CHARSET gbk

BEGIN

declare fpy char(1);

declare pc char(1);

declare cc char(4);

set @fpy = UPPER(left(words,1));

set @pc = (CONVERT(@fpy USING gbk));

set @cc = hex(@pc);

if @cc >= "8140" and @cc <="FEA0" then

begin

select PY from cs_char2letter where hz>=@pc limit 1 into @fpy;

end;

end if;

Return @fpy;

END$$

DELIMITER;





报错:

This function has none of DETERMINISTIC, NO SQL解决办法

创建存储过程时

出错信息:

 [Err] 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

原因:

这是我们开启了bin-log, 我们就必须指定我们的函数是否是

1 DETERMINISTIC 不确定的

2 NO SQL 没有SQl语句,当然也不会修改数据

3 READS SQL DATA 只是读取数据,当然也不会修改数据

4 MODIFIES SQL DATA 要修改数据

5 CONTAINS SQL 包含了SQL语句





其中在function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。如果我们开启了 bin-log, 我们就必须为我们的function指定一个参数。

解决方法:

SQL code

mysql> show variables like 'log_bin_trust_function_creators';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | OFF   |

+---------------------------------+-------+

1 row in set (0.00 sec)





mysql> set global log_bin_trust_function_creators=1;





mysql> show variables like 'log_bin_trust_function_creators';

+---------------------------------+-------+

| Variable_name                   | Value |

+---------------------------------+-------+

| log_bin_trust_function_creators | ON    |

+---------------------------------+-------+





这样添加了参数以后,如果mysqld重启,那个参数又会消失,因此记得在/etc/my.cnf配置文件中添加:

log_bin_trust_function_creators=1

二、对数据库每天进行自动备份,保留15天以内的备份(myisam引擎,innodb数据库引擎不能直接拷贝的方式备份)

1、创建保存mysql数据库备份文件的目录mysqlbak

mkdir -pv /backup/mysqlbak

修改属主属组

chown -R mysql.mysql /backup





编辑shell脚本

vim /usr/sbin/bakmysql





加入如下内容:

#关闭mysql数据库服务

service mysqld stop

#创建以当前日期为名称的目录

cd /backup/mysqlbak

time=$(date '+%Y%m%d')

mkdir $time

cp /data/mydata/TD_OA/*.* /backup/mysqlbak/$time

#备份完成后开启mysql数据库服务

service mysqld start

#删除15天以前的备份

find /backup/mysqlbak -type d -mtime +15 -exec rm -rf {} \;





3、修改文件属性,使其可执行

chmod +x /usr/sbin/bakmysql

 

4、修改/etc/crontab

vim /etc/crontab

#每天3点执行脚本

01 3 * * * mysql /usr/sbin/bakmysql





5、重新启动crond

/etc/rc.d/init.d/crond restart

三、将备份到本机的数据库文件同步备份到其他服务器

安装vsftp服务,并添加对应的ftp用户指向备份文件夹,在数据库备份服务器启用同步计划

四、参数的调整

[client]
port = 3306
socket = /tmp/mysql.sock
[mysqld]
port = 3306
default-storage-engine=MyISAM
max_connections=1500
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 4096M
max_allowed_packet = 64M
table_open_cache = 2400
open_files_limit=65535
tmp_table_size=256M
sort_buffer_size = 16M
read_buffer_size = 16M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 128M
thread_cache_size = 256
query_cache_type=0
query_cache_size= 512M
innodb_buffer_pool_size = 1024M
skip-name-resolve
wait_timeout=300
thread_concurrency = 8
innodb_buffer_pool_instances = 35
innodb_file_per_table = 1
datadir = /data/mydata
log-bin=/data/binlogs/mysql-bin
binlog-do-db=TD_OA
expire_logs_day=30
max_binlog_size = 200M
slow_query_log=ON
slow-query-log-file=/data/binlogs/slow_query.log
long_query_time=2
log_bin_trust_function_creators=1
binlog_format=mixed
server-id = 1
[mysqldump]
quick
max_allowed_packet = 64M
[mysql]
no-auto-rehash
[myisamchk]
key_buffer_size = 1024M
sort_buffer_size = 512M
read_buffer = 256M
write_buffer = 256M
[mysqlhotcopy]
interactive-timeout

记得添加

open_files_limit=65535

否则报错如下:

错误#23: Out of resources when opening file './TD_OA/USER.MYD' (Errcode: 24)

SQL语句: SELECT * from USER where USER_ID='admin' or BYNAME='admin'

修改/etc/security/limits.conf,然后加入以下内容,退出再重新登陆即可(不需要重启,退出当前的连接shell即可)

# ulimit -n 查看参数是否生效

#@student        -       maxlogins       4

* - nproc  1006154

* - nofile 1006154





# End of file

* soft nofile 1006154

* hard nofile 1006154

centos6.5环境通达OA数据库mysql5.0.67升级至mysql5.5.48方案的更多相关文章

  1. 开放Fedora10自带的MySQL5.0.67的对外数据库服务

    MySQL5.0.67是Fedora10安装时的可选项目. 测试的笔记本IP为192.168.0.100,作为安装Fedora10和MySQL5.0.67的服务器BlackMachine的IP地址为1 ...

  2. 修改通达oa数据库root密码

    第一步: 打开通达oamysql远程网页地址:如http://127.0.0.1/mysql,点击修改密码功能按钮,根据提示修改,不要生成加密密码,执行即可! 第二步:修改service.php文件的 ...

  3. 通达OA数据库优化方案之_历史数据清理

    整体思路: 1.备份现有系统数据,提供一个可以查询历史的入口(可以查询2015年6月份以前的所有OA产生的流程) 2.删除生产环境中2015年6月份以前的流程 为避免影响考勤,暂定在本月考勤定稿后实施 ...

  4. OA系统高性能解决方案(史上最全的通达OA系统优化方案)

    序: 这是一篇针对通达OA系统的整体优化方案,文档将硬件.网络.linux操作系统.程序本身(包括web和数据库)以及现有业务有效结合在一起,进行了系统的整合优化.该方案应用于真实生产环境,部署完成后 ...

  5. 通达OA 同步中控考勤机 增强版

    如果你用的是中控考勤机且考勤机能联网,那恭喜有福了! 最近发现考勤机提供web方式查询,经过调试可以用程序直接读取考勤机数据跨过考勤机软件及其access数据库,数据同步及时性.可靠性大幅提高. 通达 ...

  6. centos6.5环境通过rpm包安装mysql5.5.51数据库

    centos6.5环境通过rpm包安装mysql5.5.51数据库 注意:此方法适用于单独安装数据库的需求,如果在该机器上还需要安装php环境,建议mysql通过编译或yum方式安装 1.查找已经安装 ...

  7. centos6.5环境源码编译安装mysql5.6.34

    centos6.5环境源码编译安装mysql5.6.34 源码下载地址http://dev.mysql.com/downloads/mysql/5.6.html#downloads 选择Generic ...

  8. centos7和centos6.5环境rpm方式安装mysql5.7和mysql5.6详解

    centos环境安装mysql5.7 其实不建议安装mysql5.7 语法和配置可能和以前的版本区别较大,多坑,慎入 1.yum方式安装(不推荐) a.安装mysql5.7 yum源 centos6: ...

  9. 通达OA在centos系统中快速部署文档(web和数据库)

    通达OA2008从windows环境移植到linux中(centos5.5及以上版本) 如果安装好了,还是无法访问,则需要清空浏览器缓存即可 1.安装lamp环境,这里用的是xampp集成安装包xam ...

随机推荐

  1. R语言:多个因变量时,如何在plot函数中画多条曲线(plot,points,lines,legend函数)

    最近阅读一篇文献<Regional and individual variations in the function of the human eccrine sweat gland>, ...

  2. GBDT原理详解

    从提升树出发,——>回归提升树.二元分类.多元分类三个GBDT常见算法. 提升树 梯度提升树 回归提升树 二元分类 多元分类 面经 提升树 在说GBDT之前,先说说提升树(boosting tr ...

  3. LVS管理工具ipvsadm详解与LVS-NAT模式演示

    ipvsadm命令是工作在用户空间的LVS集群管理工具,原理是调用ipvs的API,在内核中生成ipvs的规则,主要用来管理集群服务和集群服务中的RealServer,使用方法类似iptables命令 ...

  4. Mysql占用CPU过高如何优化,如何解决

    2017-02-28 15:13 331人阅读 评论(0) 收藏 举报   MySQL占用CPU过高如何优化 一次生产DB服务器的 超负荷运行问题解决: 1.查看生产DB服务器top列表, 执行 to ...

  5. SQL Server sp_executesql介绍和使用

    execute相信大家都用的用熟了,简写为exec,除了用来执行存储过程,一般都用来执行动态Sql sp_executesql,sql2005中引入的新的系统存储过程,也是用来处理动态sql的, 如: ...

  6. python自定义函数的参数之四种表现形式

    (1)def a(x,y):print x,y 这是最常见的定义方式,调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错 (2)def a(x,y=3 ...

  7. WebServer Security apache / bind / IIS5

    s C:\Users\Lindows\Desktop\学习参考 Apache_配置规范_(Linux).zip Apache_配置规范_(Windows).zip BIND_配置规范.zip IIS5 ...

  8. java的排序类 Collections

    场景:比如说有一个List<Student> 里面有许多学生 我们想让这些学生按照年龄的大小排序 我们可以用java自带的 java.util.Collections 工具类来实现 Col ...

  9. 如何在github上下载单个文件

    原文链接:https://www.cnblogs.com/zhaoqingqing/p/5534827.html 找到目标文件,打开,会看到raw,右键,目标另存为.ok

  10. UVALive - 7637 E - Balanced String(构造)

    原题链接 题意:给出一个打乱顺序的序列,问是否能构造出一个括号匹配的字符串.每个数字为此前读取到的左括号数减去右括号数. 分析:有左括号开始构造,不够的话就找右括号.注意特殊情况待处理.详情看代码 # ...