-
MySQL官网并无5.6.44的ARM版rpm包下载,可以通过以下方法构建:1、安装必要的工具:yum install rpm-build libaio-devel gperf ncurses-devel2、创建一个rpmbuild用户,用户名不限,mysql的rpmbuild执行时会检查用户身份,如果是root会拒绝构建;3、下载mysql 5.6.44的[SRPM包|https://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.44-1.el7.src.rpm];4、切到rpmbuild用户: su - rpmbuild5、安装SRPM包:rpm -ivh MySQL-5.6/MySQL-5.6.44-1.el7.src.rpm6、设置make的j参数(cpu核心数):export MYSQL_BUILD_MAKE_JFLAG=-j177、【关键步骤】设置CMAKE的环境变量,否则由于cmake脚本问题(cmake/install_layout.cmake),lib库会安装到/usr/lib,而不是/usr/lib64:export MYSQL_BUILD_CMAKE="cmake -DINSTALL_LIBDIR=lib64 -DINSTALL_PLUGINDIR=lib64/mysql/plugin"8、执行rpmbuild -bb rpmbuild/SPEC/mysql.spec9、构建出来的rpm包在rpmbuild/RPMS目录下
-
1. 简介MySQL是一种快速易用的关系型数据库管理系统(RDBMS),它通过插件形式提供了多种存储引擎,目前最通用的是InnoDB。作为一款开放源码的数据库软件,MySQL社区及用户活跃度很高,用户问题往往可以及时得到响应。此外,MySQL还具有软件体积小、安装简单易于维护等优点。官方链接:https://dev.mysql.com/doc/refman/5.7/en/类别:云计算/数据库2. 部署环境Packet NameVersionCentOSCentOS 7.5 with ARMMySQL5.7.22Boost1.59.03. 安装部署 3.1 依赖安装在系统中安装需要的组件,安装相应的库:yum install gcc gcc-c++ libtool cmake ncurses-devel bison libaio-devel libncurses-devel libopenssl-devel zlib-devel autoconf perl perl-devel 3.2 编译升级GCC由于服务器Centos7.5默认安装的GCC版本较低,需要进行升级GCC,版本信息如下:gcc --version gcc (GCC) 4.8.5下载编译安装gcc 7.3.0#下载gcc-7.3.0 wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz #解压 tar xvf gcc-7.3.0.tar.gz cd gcc-7.3.0 ./contrib/download_prerequisites #建立编译输出目录,将所有的中间文件都放到该目录 mkdir gcc-build-7.3.0 && cd gcc-build-7.3.0 #配置编译环境并执行编译 # configure参数说明: # --enable-languages:指定 gcc 能编译哪些语言的文件,每种语言用逗号分隔, 例如 c,c++,java # --disable-multilib:默认gcc 能在32位系统上将代码编译成64位程序,或者在64位系统上编译成32位程序,如果加上这个编译选项则表示关闭这个gcc的交叉编译功能 ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib #编译mysql # -j 参数说明:优化多核,多线程编译,允许多个编译命令同时执行,并行任务不宜太多,1-2倍核数 # 时间较长,1-2小时或者更久,请确保make阶段不中断,否则make install会报'No rule to make target install' make -j4 #编译完成之后,需要把原来的GCC卸载 rpm -e $(rpm -q gcc-c++) rpm -e $(rpm -q libtool) rpm -e $(rpm -q gcc) #在gcc-build-7.3.0目录下运行安装gcc 7.3.0版本 make install -j4 设置gcc环境变量export PATH=$PATH:/usr/local/bin ln -s /usr/local/bin/gcc /usr/bin/gcc更换gcc的lib库 cd /usr/lib64/ #备份,避免编译出错可恢复 cp libstdc++.so.6 libstdc++.so.6.old rm -rf libstdc++.so.6 cp /usr/local/lib64/libstdc++.so.6 ./ cp /usr/local/lib64/libatomic.so.1 ./验证gcc版本gcc --version gcc (GCC) 7.3.03.3 编译安装MySQL下载相应的源码包wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz wget https://github.com/mysql/mysql-server/archive/mysql-5.7.22.tar.gz新建Mysql用户和用户组,保证mysql服务的独立性groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql预编译tar -zxvf boost_1_59_0.tar.gz tar -zxvf mysql-5.7.22.tar.gz #需提前创建,否则后面会提示报错 mkdir -p /data/mysql cd mysql-5.7.22 #这一步需下载补丁,解决高并发下死锁的bug https://bugs.mysql.com/file.php?id=28180&bug_id=9469 patch –p1 < 0001-Bug-94699-Mysql-deadlock-and-bugcheck-on-aarch64.patch # -DCMAKE_INSTALL_PREFIX 指定mysql安装路径 # -DMYSQL_DATADIR 指定数据安装路径,且指定版本1.59.0 # -DWITH_BOOST Mysql5.7 以后Bootst为必须选项, # -DSYSCONFDIR 指定配置文件的安装路径 # -DWITH_INNOBASE_STORAGE_ENGINE 安装INNOBASE存储引擎 # -DWITH_PARTITION_STORAGE_ENGINE 安装PARTITION存储引擎 # -DWITH_BLACKHOLE_STORAGE_ENGINE 安装BLACKHOLE存储引擎 # -DWITH_MYISAM_STORAGE_ENGINE 安装MYISAM存储引擎 # -DENABLED_LOCAL_INFILE 是否启动本地的LOCAL_INFILE # -DENABLE_DTRACE # -DDEFAULT_CHARSET 默认字符集 # -DDEFAULT_COLLATION 默认的字符集排序规则 cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DWITH_BOOST=../boost_1_59_0 \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci编译安装 make -j4 make install 设置启动脚本,开机自启动 ls -lrt /usr/local/mysql cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld systemctl enable mysqld修改配置文件#/etc/my.cnf,仅供参考 vi /etc/my.cnf [client] port = 3306 socket = /dev/shm/mysql.sock [mysqld] port = 3306 socket = /dev/shm/mysql.sock basedir = /usr/local/mysql datadir = /data/mysql pid-file = /data/mysql/mysql.pid user = mysql bind-address = 0.0.0.0 server-id = 1 init-connect = 'SET NAMES utf8mb4' character-set-server = utf8mb4 #skip-name-resolve #skip-networking back_log = 300 max_connections = 1000 max_connect_errors = 6000 open_files_limit = 65535 table_open_cache = 128 max_allowed_packet = 4M binlog_cache_size = 1M max_heap_table_size = 8M tmp_table_size = 16M read_buffer_size = 2M read_rnd_buffer_size = 8M sort_buffer_size = 8M join_buffer_size = 8M key_buffer_size = 4M thread_cache_size = 8 query_cache_type = 1 query_cache_size = 8M query_cache_limit = 2M ft_min_word_len = 4 log_bin = mysql-bin binlog_format = mixed expire_logs_days = 30 log_error = /data/mysql/mysql-error.log slow_query_log = 1 long_query_time = 1 slow_query_log_file = /data/mysql/mysql-slow.log performance_schema = 0 explicit_defaults_for_timestamp #lower_case_table_names = 1 skip-external-locking default_storage_engine = InnoDB #default-storage-engine = MyISAM innodb_file_per_table = 1 innodb_open_files = 500 innodb_buffer_pool_size = 64M innodb_write_io_threads = 4 innodb_read_io_threads = 4 innodb_thread_concurrency = 0 innodb_purge_threads = 1 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 2M innodb_log_file_size = 32M innodb_log_files_in_group = 3 innodb_max_dirty_pages_pct = 90 innodb_lock_wait_timeout = 120 bulk_insert_buffer_size = 8M myisam_sort_buffer_size = 8M myisam_max_sort_file_size = 10G myisam_repair_threads = 1 interactive_timeout = 28800 wait_timeout = 28800 [mysqldump] quick max_allowed_packet = 16M [myisamchk] key_buffer_size = 8M sort_buffer_size = 8M read_buffer = 4M write_buffer = 4M添加mysql的环境变量# 将/etc/profile文件尾部加入 export PATH=$PATH:/usr/local/mysql/bin vi /etc/profile export MYSQL_HOME=/usr/local/mysql export PATH=$PATH:$MYSQL_HOME/bin #环境变量生效 source /etc/profile #验证环境变量 echo $PATH初始化数据库# "–initialize-insecure"不会生成密码 # "–datadir"目录下不能有数据文件 mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql启动数据库 systemctl start mysqld # 验证状态 active systemctl status mysqld # 验证mysql进程已起 ps -ef | grep mysql # 查看mysql服务端口 netstat -tunpl | grep 3306设置数据库root用户密码# 设置root密码,密码策略有LOW、MEDIUM,STRONG三个等级 mysql_secure_installation3.4 测试安装结束后执行命令启动MySQL:mysql -uroot -p mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sys | +--------------------+ 3.5 参考信息[1] 在CentOS7上编译安装MySQL 5.7.13步骤详解:https://www.jianshu.com/p/95a103add722[2] 安装MySQL常见的三种方式:https://www.jb51.net/article/71860.htm[3] mysql.sock的作用:https://www.cnblogs.com/mrwang1101/p/4887842.html
-
大家好,今天给大家演示一下,使用华为云数据库复制服务(DRS),实现阿里云MySQL数据库的数据通过全量+增量方式迁移到华为云的MySQL数据库,拓扑结构如下图所示:源数据库:阿里云RDS MySQL数据库,这里选择单机版;数据库复制服务:选择用华为云的数据库复制服务;目标数据库:选择与华为云数据库复制服务在同一个vpc下的RDS MySQL数据库,单机版。DRS迁移实例需要通过公网访问目标数据库服务、源数据库,也就是说,这两个数据库均要开通公网IP,对于阿里云的mysql,需要设置白名单规则,为方便演示,设置为0.0.0.0/0,表示允许任何ip访问。接下来,我们一步步的详细描述操作步骤:一、登录阿里云,创建源数据库1、登录阿里云 阿里云要求开资源要预存不低于100元,登录后要先充值,才能开通资源。2、开通mysql数据库登录“云数据库RDS”,在实例列表中,点击右上角的“创建实例”,选择“按量付费”,选择开通的实例参数如下:地域 :华北 1 (青岛)数据库类型 :MySQL 5.7系列:基础版可用区:华北 1 可用区 B存储空间 :20GB ( SSD云盘 )规格 :1 核 1GB(基础版)网络 :专有网络 购买量 :1个点击“立即购买”,进入支付页面,列出所开资源的详细配置信息,和应付款费用,点击“去支付”开通成功后,返还到实例列表页面,此时注意选择华北1(青岛)节点,不然是看不到所创建的实例,需要等2分钟,就能才能看到新创建的实例已经成功创建,运行状态变为“运行中”,然后就是各种短信和邮件提醒。3、创建root权限账号 点击实例名称,进入实例管理页面,在“账号管理”,点击“创建账号”,创建账号root,并确认。4、申请外网访问地址 在数据库实例管理页面中,打开“数据库连接”,点击“申请外网地址”,并确认开通。5、设置白名单 修改白名单分组,组内白名单:0.0.0.0/0,表示允许任何ip访问RDS实例。 在数据库连接里,能看到外网地址为域名字符串。在数据库连接页面,选择外网地址:设置白名单,打开白名单设置页面,点击“修改”在组内白名单里,将ip地址修改为“0.0.0.0/0”,并确认。如图,外网地址不是外网ip地址,是域名访问连接串。二、导入官方示例数据库文件到源MySQL数据库方法一:通过云端开通ecs方式导入mysql官方示例数据库1、在华为云上开通一台centos7.5的云主机,并以yum方式安装mysql数据库。2、通过ftp或其他工具上传mysql的官方示例数据库文件test_db-master.zip到/home目录。解压zip文件,并进入到test_db-master目录下。unzip test_db-master.zipcd test_db-master3、执行以下命令,把当前目录的示例数据库文件导入到阿里云上开通的mysql数据库。mysql -h rm-m5erxzzws8b9y3p53to.mysql.rds.aliyuncs.com -P 3306 -uroot -pTest@1234 < employees.sql 出现以上内容表示安装成功,可以通过这台ecs远程连接到阿里云mysql数据库,验证一下数据库是否导入成功。方法二:本地方式导入示例数据文件1、首先要本地的操作系统安装mysql数据库,此处忽略;2、百度云盘下载示例文件,链接: https://pan.baidu.com/s/1NfMw_6r3VafykMY-AxTugQ 提取码: 6vd2或者访问 https://github.com/datacharmer/test_db 自行下载。解压后进入到该目录。3、执行以下命令,把当前目录的示例数据库文件导入到阿里云上开通的mysql数据库。mysql -h rm-m5erxzzws8b9y3p53to.mysql.rds.aliyuncs.com -P 3306 -uroot -pTest@1234 < employees.sql 三、创建华为云目标数据库1、创建mysql目标数据库; 按照如下参数创建MySQL目的数据库:提交进入实例管理界面,明显感觉比阿里云上创建的时间要长,大概花了5分钟多。2、开启远程连接实现公网访问(华为云提供免费的1M带宽的EIP服务)。进入rds基本信息页面,打开“远程连接”,很快就显示了公网ip地址。 可以通过这个公网ip通过外网访问mysql数据库。四、创建迁移任务,进行迁移1、创建迁移实例 选择“入云”、源、目标数据库引擎均为MySQL,网络类型为“公网网络”、目标数据库实例:选择刚创建的目标数据库实例,目标数据库读写设置为“只读”,迁移模式为“全量+增量”如下图所示:点击下一步后,系统创建迁移实例。2、源库及目标库 迁移实例的同时,可以选择源库、目标库的相关信息: 源库:输入阿里云mysql外网域名连接串、端口:3360、数据库用户名/密码:root/Test@1234,为方便演示,关闭SSL安全连接,等迁移实例创建成果后,测试连接。 目标库:输入root/Test@1234,测试连接。测试都通过后,勾选承诺后,点击下一步。3、迁移模式 选择“全量+增量”、目前只有myslq支持迁移用户功能,为方便操作,选择“不迁移用户”、“全部迁移”4、预检查在“预检查”页面,进行迁移任务预校验,校验是否可进行任务迁移。查看检查结果,如有失败的检查项,需要修复失败项后,单击“重新校验”按钮重新进行迁移任务预校验。预检查完成后,且所有检查项结果均成功时,单击“下一步”。没通过的,根据提示的建议修改mysql的参数值。5、参数对比 分别在“常规参数”、“性能参数”页面,选择不一致的参数,点击“一键修改”后,点击下一步。注:性能参数页面,点击“一键修改”后,该页面刷新后,不一致依然存在,解释说部分参数需要重启目标数据库后才能生效,所以不管直接下一步。6、任务确认 点击“启动任务”就,进入在线迁移管理页面,打开“迁移进度”标签页,进入图形化监控页面。几十万条记录,1-2分钟就完成全量迁移,并且能看到增量迁移同步时延迟为0s。当操作到这一步时,我们可以打开“迁移对比”标签,可以查看对象级、数据级是否一致,如下图:其中数据级对比,需要创建对比任务,对比完成后,可点击“查看对比报表”,进行详细查看,如下图所示。最后,在迁移图形界面下面有关于应用切换流程的建议:典型的全量+增量迁移操作及应用切换流程1. 启动迁移:建议选择一个非业务繁忙时间段,启动全量迁移+增量迁移任务。2. 观察全量迁移进度和同步时延:查看“迁移进度”页面,确保全量迁移进度为100%,数据同步时延为0s,稳定保持一段时间。3. 观察迁移对比结果:通过“迁移对比”页面观察源数据库和目标数据库的各类对象的对比结果,确保对比结果均为“一致”状态。4. 结束迁移:先中断业务,确定对应的应用不再对数据库有修改请求,然后返回在线迁移管理页面,单击任务列表中对应任务的“结束”按钮,DRS将断开源数据库和目标数据库之间的连接,并恢复目标数据库。5. 切换数据库:用户决定应用切换时,修改应用系统配置访问目标数据库,并测试切换后的业务系统。
-
非常荣幸的到这次评测的机会并参与到整个活动中 本次评测主要横向对比华为云、阿里云、aws的RDS for SQLServer产品在购买、使用、技术细节和远期使用的主要细节,力求公正、客观的评价这三个云厂商的产品。因使用习惯和大环境考虑,此次评测不把腾讯云和Azure云考虑在内。 华为云 阿里云 aws版本 12 8 4个大版本(细分多个小版本) 关于数据库管理账号华为云貌似给所有版本的RDS for SQL Server管理员账号名都做了统一的命 阿里云没有限制,但是需创建高权限账号和管理员 aws同样没有对用户名做限制。 创建数据RDS实例我选择的是中等规格的实例,华为云实测10分钟,阿里云实测5分钟,aws实测15分钟。华为云表现一般,但是鉴于很多同学同时选择同一类型的实例,所以创建时间可以理解。 数据库管理页面华为云数据管理服务DAS界面简洁清爽,页面管理功能不多,但常用功能都有,相信也很少有用户用DAS web页面管理数据库。 阿里云dms服务功能齐全,并且可申请诊断报告,并且提供了移动端的app来访问RDS。另外阿里云的DTS数据库迁移服务很好用,并且只要不是增量迁移都是免费的。这一点阿里云做的确实出色。 aws没有这个功能。。。。。。。 关于连接数据库华为这边必须通过ip来链接数据库,本地公网访问的话必须绑定公网ip,当然也能用ECS做个反向代理来链接 阿里云则用DNS来提供访问。开启公网DNS也无需额 aws这么公开DNS可见性,外网就可连接,也无需额外费用。有子网组的概念,需跟vpc中需使用的子网关联,ec2才可以内网访问 关于修改数据库参数 华为云和阿里云这边都没什么好说的,直接修改参数就可以。 aws这边不能修改默认的参数组,需要新建参数组,修改参数组中的数据,亦或者修改安全组、可见性、备份策略,如果立即应用的话都有意外停机的危险。 数据库性能很多同学都做了专业详尽性能的评测。由于三朵云所选的实例规格和版本都不同,输出的结果不具备代表性,我这里就不在做评测了 并且,18年底阿里云发布了RDS for SQL Server AlwaysOn集群版本,当然价格也比较感人,允许启用多个“可选规格的只读副本实例”。 关于数据库的小工具本来这个不归于RDS的范畴,但是我还是想说一下。 用户选择云厂商的rds时不仅只考虑性能和规划,一些常用的小工具也是考虑的重要因素。例如,之前做项目,一个友商做数据迁移的时候用的就是阿里云的DTS工具,虽然他没有用过阿里云的其他产品,但是别人就给他推荐阿里云的DTS做数据库迁移使用,如果不是增量迁移还免费。这也就间接提高了知名度和口碑。华为云数据复制服务DRS不支持SQL Server增量迁移,且源端和目标端必须有一个在华为云上,aws的DMS也必须有一端在aws上,并且要是用aws的DMS还必须开ec2虚机才能使用。 支持能力18年底,阿里云发布了RDS for SQL Server AlwaysOn集群版本,当然价格也比较感人,允许启用多个“可选规格的只读副本实例”,极大的缓解读的压力,也体现阿里对RDS for SQL Server的重视程度。华为同样投入很大来维护RDS for SQL Server,并且有很好的的售后团队7x24小时提供服务 aws首席执行官Andy Jassy在re:Invent2018大会中就炮轰Oracle和SQL Server数据库是“灵活性较低、成本高、锁定度高的老旧数据库”,为其Aurora数据库做备述。言外之意,SQL Server未来将得不到aws很好的技术支持,将鼓励用户迁移到aws自家的数据库Aurora。不买suport服务只能查文档。 吐槽必须使用ip连接数据库 总结无论从哪方面来看,华为云RDS for SQL Server都不逊于友商,云计算行业是蓝海,但是各家云厂商的厮杀已经到了红海阶段。华为是一家以技术为核心的公司,并且华为云承诺“下不碰数据,上不做应用”,并且长期投入公有云,虽然华为公有云云起步相对于友商来说起步较晚,但是华为是技术性的实业公司,相对于友商的互联网企业来说有庞大的硬件技术优势,在私有云方面占有很大的市场份额,同等条件下用户对华为的好感度是要强于互联网型的友商,但是华为云的品牌和华为的品牌还是有一点差距,也希望华为云做好产品,赢取更多用户的信赖。所以,我推荐华为云RDS。
-
问题ticket:https://bugs.mysql.com/bug.php?id=94699华为图灵团队在对mysql做超大规模测试时发现,mysql5.7存在一个较大概率的死锁问题。经过调试和定位,发现这是一个由于和X86架构不同导致的一个常见编程写法的问题。出问题的代码如下: if (!pass && lock->recursive && os_thread_eq(lock->writer_thread, thread_id)) {程序员的定式思维,通过&&连接的条件会从左到右依次执行,所以上述的语句是对锁的两次访问操作也是顺序执行的。然而鲲鹏、ARMv8等架构和X86_64架构在程序运行时的内存访问顺序设计理念不同。ARM64是弱一致性的,而X86_64是松一致性的。从下表可以看出X86_64对内存的读是不乱序的。Type鲲鹏/ARMx86AMD64Loads reordered after loadsYLoads reordered after storesYStores reordered after storesYStores reordered after loadsYYYAtomic reordered with loadsYAtomic reordered with storesYDependent loads reorderedIncoherent instruction cache pipelineYY所以在arm上运行上面那行代码,哪一个条件先被访问到实际上不可控制。社区已经接纳的改动如下 bool recursive; os_thread_id_t writer_thread; if (!pass) { recursive = lock->recursive; os_rmb; writer_thread = lock->writer_thread; } if (!pass && recursive && os_thread_eq(writer_thread, thread_id)) {通过一个程序段落显示控制内存访问的先后。
-
前面一篇文章搜索“免费试用”ECS产品,结果很失望,这次搜索“免费试用mysql”,结果更糟糕,搜索结果毫无相关性,用户直接流失,一万条记录然并卵,耐心从第一条浏览到页尾,没有一条相关。建议:对于特定关键词,要采用人工干预,搜索引擎排名算法计算出来的结果毫无用处,如果用户采用了搜索的方式,尽量提供免费试用相关产品链接,再不济,有个试用申请流程?
-
想了解更多内容,请扫码关注【HW云数据库】
-
【摘要】 华为云社区月刊,每月更新一刊,欢迎大家品读。技术实践云速建站:建站专家详解建站系列直播合集一名开源拓荒者的 Apache 之旅Mysql数据库开发的36条原则Easy!一节课搞懂流媒体性能测试,参与活动抽好礼!华为云创新技术厚积薄发,斩获数据库行业两项创新大奖华为云服务器实战 之 Gitlab安装与配置使用DevOps组织I&O专业人员新角色分析与技能提升担心未知风险,决策错误?态势感知让安全运维不再摸黑!云速建站:关于企业版的几点说明无公网ECS/云桌面通过有公网ECS部署Squid 实现私网访问外网实践云速建站:购买前的指导华为云入门:如何快速创建弹性云服务器【nodejs原理&源码赏析(3)】欣赏手术级的原型链加工艺术头条资讯华为云一站式AI开发平台ModelArts获2019全球智博会金奖等级保护2.0发布!过了4级的华为云如何帮助你?华为云&华中大联合实验室,夺得2019ICDAR发票识别竞赛世界第一做普惠AI实干家,华为云“Cloud+X”助力杭州打造数字经济第一城哈药&华为云,让医药生产更省心华为汪涛:迈向智能时代,重定义数据基础设施让群众少跑腿数据多跑路,华为云Stack助力上海政务跑出“极速”华为云AI斩获2019数博会“黑科技”等四大奖项华为云发布:全球首个自研ARM架构分布式缓存Redis近看神秘的云,它其实不止于云弹弹弹弹!华为云助新浪新闻弹走流量压力你关心的“云原生+AI”问题,答案都在这里云+AI时代,华为云敏捷开发+DevOps助力大企业效能提升80万辆车“云上飞驰”的背后华为云Stack位居中国云管理平台市场占有率第一华为聚焦AI基础平台,加速行业智能化落地一个“焦炭老板”的烦忧和喜乐道路千万条,不堵最重要!华为云城市智能体来为您“指路”你的复联梦还在吗?—— 来自安踏&华为云的问候华为张顺茂:华为云 FusionPlant平台做工业互联网的黑土地华为张顺茂:华为FusionPlant平台助力国家电网打造泛在电力物联网华为郑叶来:数据+AI,激发新潜能专题华为云开发者好课云速建站—快速掌握建站方法精彩活动【云享专家•微话题】韦世东邀你讨论爬虫程序对生活带来哪些影响?赢取爬虫书籍【限时免费】 5节课从0到N转变——微服务全景体验实践课【趁热打“帖”】这里竟藏有200元京东购物卡,发帖好礼等你拿!吐槽有“礼”——华为云云服务器ECS有奖征集建议活动(该活动长期有效)金牌体验师火热招募中,回帖赢取价值¥88元的微认证课程!本期体验产品: 华为云优惠活动全流程体验【有奖征文】说说你与云原生的那些事儿,华为手环、云原生书籍等多重好礼等你来撩
-
使用Maxwell同步工具,基于binlog将MySQL中的数据同步到MRS kafka中1.1.1 Maxwell概述Maxwell是一个开源项目(http://maxwells-daemon.io),通过读取MySQL的binlog日志,将增删改等操作转为JSON格式发送到输出端(如控制台/文件/Kafka等)Maxwell运行在Linux服务器上,常见的有EulerOS、Ubuntu、Debian、CentOS、OpenSUSE等,且需要Java 1.8+支持。Maxwell可部署在MySQL机器上,也可独立部署在其他与MySQL网络可通的机器上。 1.1.2 配置MySQL 步骤 1 开启binlog 打开my.cnf文件,在[mysqld] 区块检查是否配置server_id,log-bin与binlog_format $ vi my.cnf [mysqld] server_id=1 log-bin=master binlog_format=row 若没有配置请添加配置项,并重启mysql 步骤2 创建同步用户 Maxwell需要连接MySQL,并创建一个名称为maxwell的数据库存储元数据,且需要能访问需要同步的数据库,故建议新创建一个MySQL用户专门用来给Maxwell使用。 使用root登录MySQL之后,执行如下命令创建maxwell用户(其中XXXXXX是密码,请修改为实际值) 若Maxwell程序部署在非MySQL机器上,则创建的maxwell用户需要有远程登录数据库的权限,此时创建命令为 mysql> GRANT ALL on maxwell.* to 'maxwell'@'%' identified by 'XXXXXX'; mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'%'; 若Maxwell部署在MySQL机器上,则创建的maxwell用户可以设置为只能在本机登录数据库,此时创建命令为 mysql> GRANT SELECT, REPLICATION CLIENT, REPLICATION SLAVE on *.* to 'maxwell'@'localhost' identified by 'XXXXXX'; mysql> GRANT ALL on maxwell.* to 'maxwell'@'localhost';1.1.3 安装Maxwell 步骤 1 从如下地址下载安装包https://github.com/zendesk/maxwell/releases 选择名为maxwell-XXX.tar.gz的二进制文件下载,其中XXX为版本号。 步骤 2 使用WinSCP等传输工具将tar.gz包上传到任意目录下(本示例路径为master节点的/opt) 步骤 3 使用PuTTY等工具登录部署Maxwell的服务器,并进入zip所在目录 cd /opt 步骤 4 解压“maxwell-XXX.tar.gz”压缩包,并进入“maxwell-XXX”文件夹 tar -zxvf maxwell-XXX.tar.gz cd maxwell-XXX1.1.4 配置Maxwell 在Maxwell的conf目录下有一个config.properties文件,配置项说明请参见下表。若没有conf目录,则是在maxwell的文件夹下将config.properties.example修改成config.properties。配置项必填说明默认值user是连接MySQL的用户名,即1.1.2 步骤 2 中新创建的用户-password是连接MySQL的密码-host否MySQL地址localhostport否MySQL端口3306log_level否日志打印级别,可选值为l debugl infol warnl errorinfooutput_ddl 否是否发送DDL(数据库与数据表的定义修改)事件l true:发送DDL事件l false:不发送DDL事件falseproducer是生产者类型,配置为kafkal stdout:将生成的事件打印在日志中 l kafka:将生成的事件发送到kafkastdoutproducer_partition_by否分区策略,用来确保相同一类的数据写入到kafka同一分区l database:使用数据库名称做分区,保证同一个数据库的事件写入到kafka同一个分区中l table:使用表名称做分区,保证同一个表的事件写入到kafka同一个分区中databaseignore_producer_error否是否忽略生产者发送数据失败的错误l true:在日志打印错误信息并跳过错误的数据,程序继续运行l false:在日志打印错误信息并终止程序truemetrics_slf4j_interval否在日志中输出上传kafka成功与失败的数量统计的时间间隔,单位秒60kafka.bootstrap.servers是kafka代理节点地址,配置形式为HOST:PORT[,HOST:PORT]kafka_topic否写入kafka的topic名maxwelldead_letter_topic否当发送某条记录出错时,记录该条出错记录主键的kafka topic。kafka_version否Maxwell使用的kafka producer版本号,不能在config.properties中配置,需要在启动命令时用-- kafka_version xxx参数传入kafka_partition_hash否划分kafka topic partition的算法,支持default或murmur3defaultkafka_key_format否Kafka record的key生成方式,支持array或hashHashddl_kafka_topic否当output_ddl配置为true时,DDL操作写入的topic{kafka_topic}filter否用于过滤数据库或表。l 如只想采集mydatabase的库,可以配置为 exclude: *.*,include: mydatabase.*l 如只想采集mydatabase.mytable的表,可以配置为 exclude: *.*,include: mydatabase.mytablel 如只想采集mydatabase库下的mytable,mydate_123, mydate_456表,可以配置为exclude: *.*,include: mydatabase.mytable, include: mydatabase./mydate_\\d*/ 1.1.5 启动Maxwell 步骤 1 使用PuTTY工具登录Maxwell所在的服务器。 步骤 2 进入Maxwell安装目录。 cd /opt/ maxwell-1.21.0/注意:如果是初次使用Maxwell,建议将conf/config.properties中的log_level改为debug(调试级别),以便观察启动之后是否能正常从MySQL获取数据并发送到kafka,当整个流程调试通过之后,再把log_level修改为info,然后先停止再启动Maxwell生效# log level [debug | info | warn | error]log_level=debug 步骤 3 启动Maxwell。 source /opt/client/bigdata_env bin/Maxwell 也可以在启动命令中添加参数,例如: bin/maxwell --user='maxwell' --password='XXXXXX' --host='127.0.0.1' \ --producer=kafka --kafka.bootstrap.servers=kafkahost:9092 --kafka_topic=Maxwell 其中kafkahost为流式集群的core节点的IP地址。 显示类似如下信息,表示Maxwell启动成功。 Success to start Maxwell [78092]. ----结束1.1.6 验证Maxwell 步骤 1 使用PuTTY工具登录Maxwell所在的服务器。 步骤 2 查看日志。 l 如果日志里面没有ERROR日志,且有打印如下日志,表示与MySQL连接正常 BinlogConnectorLifecycleListener - Binlog connected. 步骤 3 登录MySQL数据库,对测试数据进行更新/**/删除等操作。操作语句可以参考如下范例-- 创建库create database test;-- 创建表create table test.e ( id int(10) not null primary key auto_increment, m double, c timestamp(6), comment varchar(255) charset 'latin1');-- 增加记录insert into test.e set m = 4.2341, c = now(3), comment = 'I am a creature of light.';-- 更新记录update test.e set m = 5.444, c = now(3) where id = 1;-- 删除记录delete from test.e where id = 1;-- 修改表alter table test.e add column torvalds bigint unsigned after m;-- 删除表drop table test.e;-- 删除库drop database test; 步骤 4 观察maxwell的日志输出,如果没有WARN/ERROR打印,则表示没有异常。若要确定数据是否成功上传,可通过如下方式l 如果config.properties中的log_level是debug,则数据上传成功时会立刻打印日志 {"database":"test","table":"e","type":"insert","ts":1541150929,"xid":60556,"commit":true,"data":{"id":1,"m":4.2341,"c":"2018-11-02 09:28:49.297000","comment":"I am a creature of light."}} …… 为发送的JSON格式数据 注意 当整个流程调试通过之后,可以把log_level修改为info,减少日志打印量,并重启Maxwell # log level [debug | info | warn | error] log_level=info----结束1.1.7 停止Maxwell 步骤 1 使用PuTTY工具登录Maxwell所在的服务器。 步骤 2 执行ps -ef | grep Maxwell | grep -v grep命令,获取Maxwell的进程标识(PID)。输出的第二个字段即为PID。 步骤 3 执行kill -9 PID命令,强制停止Maxwell进程。----结束1.1.8 数据格式Maxwell生成的数据格式为JSON,常见字段含义如下l type:操作类型,包含database-create,database-drop,table-create,table-drop,table-alter,insert,update,deletel databse:操作的数据库名称l ts:操作时间,13位时间戳l table:操作的表名l data:数据增加/删除/修改之后的内容l old:数据修改前的内容或者表修改前的结构定义l sql:DDL操作的SQL语句l def:表创建与表修改的结构定义l xid:事物唯一IDl commit:数据增加/删除/修改操作是否已提交
-
随着金融科技的发展,金融行业业务日趋多样化和复杂化,对 IT 系统架构的要求也水涨船高。数据库承载着金融企业的核心数据,出现数据丢失、业务连续性中断,对企业而言,不但造成经济损失,而且进一步影响商誉及信誉。 MySQL 作为广受欢迎的开源数据库,传统主备架构下异步、半同步复制可能导致数据丢失的问题,成为企业亟待解决的难题。为此,华为云推出 MySQL 金融版,为广大用户排忧解难。 华为云 MySQL 金融版优势: 基于 Paxos 协议,采用一主两备三节点架构; 解决数据库分布式环境下数据一致性的问题; 自动脑裂保护机制; 保证数据库高可用和高可靠、数据 0 丢失!华为云 MySQL金融版一主两备三节点架构图(目前仅 MySQL5.7 版本支持金融版)一主两备三节点架构,强一致性确保数据零丢失1. 可靠性保证在三节点架构方案中,用户提交事务时,需要等待至少一个备库收到日志副本,才返回给用户事务成功结束的信号,且确认事务会自动持久化到多数派主机中,确保数据库的可靠性。2. 可用性保证在三节点架构下,无论任意一台服务器挂掉,也不影响业务可用性,因为已提交的数据至少有 2 份副本,挂掉一台,还有至少1台是包含了已提交事务的持久化内容,确保数据库的可用性。3. 强一致性保证引入 Paxos 协议,内置了自动选主和解决脑裂的机制;如果某个节点成为了网络孤岛,就会被自动踢出集群,确保数据最终一致性。目前,华为云 MySQL 金融版已上线公测,对于金融场景如银行、保险、抑或是对数据可靠性同样具备高要求的其它场景而言,都可前往官网申请试用。 想了解更多精彩内容,请扫码关注【HW云数据库】
-
事情还原: Navicat 12.1.7 x64管理华为云 MySQL ,前几次(大概3次)的打开数据库、执行 sql 都没有问题,大约 3 次操作之后再执行的 sql 操作都会出现非常严重的迟滞,平均最短时需要 20 几秒返回结果,最长需要不到2分钟返回结果,而且一旦出现无法恢复。 下工单联系过客服,华为服务还是比较到位,工程师通过电话+Q方式我们配合复现问题,采用抓包等方法折腾两天,最后通过抓包分析公司的网络出现比较多“重复发送”,给出的建议是优化本地网络。 同样的软件,连接腾讯云、阿里云都不会出现这样的问题,怎么解释?
-
想了解更多精彩内容,请扫码关注【HW云数据库】
-
【DBA系列】001 我的数据库无法写入了,怎么办?【DBA系列】002 游戏上线,发现性能隐患咋办?【DBA系列】003 MySQL 执行语句总报错,导致应用故障怎么办? 【DBA系列】004 网站延迟请求响应慢,是谁的锅?【DBA系列】005 PostgreSQL数据库建表遭遇报错怎么破? 【DBA系列】006 性能不够资源凑?不,这是个无底洞【DBA系列】007 业务连续异常中断,怎么办?【DBA系列】008 MySQL 数据库备份老是出问题,怎么办?【DBA系列】009 重要业务上线在即,数据库压测不过关怎么办?【DBA系列】010 数据库内存占用太高,怎么办?【DBA系列】011 数据库崩溃后如何高效稳妥的恢复?【DBA系列】012 数据库主备复制延迟怎么办?【DBA系列】013 SQL Server 性能优化只需三招(上)【DBA系列】014 SQL Server 性能优化只需三招(下)【DBA系列】015 如何应对MySQL 系统变量 lower_case_table_names 使用问题【DBA系列】017 MySQL一键开通Binlog自动清理功能,还您一个充足的磁盘空间【DBA系列】018 Cassandra扩容超级慢?别担心,GeminiDB for Cassandra让您快人一步【DBA系列】019 圣诞特别版|数据库频频出现OOM问题该如何化解?【DBA系列】020 MongoDB经典故障系列一|数据库频繁启动失败怎么办?【DBA系列】021 MongoDB经典故障系列二:如何限制最大连接数?【DBA系列】022 MongoDB经典故障系列三|副本集延迟太高怎么办?【DBA系列】023 MongoDB经典故障系列四|调整oplog大小,引起从库宕机怎么办?【DBA系列】024 MongoDB经典故障系列五| sharding集群执行sh.stopBalancer()命令时被卡住怎么办?【DBA系列】025 万万没想到,我在夜市地摊解决了MySQL临时表空间难题~~【DBA系列】026 MongoDB经典故障系列六:CPU利⽤率太⾼怎么办?【DBA系列】027 一文读懂MySQL4种事务隔离级别【DBA系列】028 从存储端高并发之线程池,聊聊GaussDB(for MySQL) 的高扩展性【番外1】2018 DBA人的日常【番外2】哪些关键参数影响数据迁移?【番外3】如何既提升性能,又保证不丢数据?【番外4】想知道“数据跨界”调用怎么弄?【番外5】好用的数据迁移工具到底多重要?【特别策划】数据库迁移防坑指南
-
问题:客户mysql数据库迁移上云后,发现数据写入性能降低了问题原因:经过分析发现客户原始数据表的存储引擎为myisam,迁移上云后转换成了innodb。MyISAM引擎表数据修改速度比InnoDB类型更快,但是不提供事务支持。mysql数据库中有个disabled_storage_engines参数:表示禁止创建指定存储引擎类型的表,官方默认值为空。华为云mysql数据库disabled_storage_engines参数默认值为"myisam,memory"。所以,在客户将mysql数据库迁移上云后,数据表对应的存储引擎类型从myisam自动转换成了innodb。解决方案:建议客户在迁移数据库时,对比迁移前后的数据库参数取值,并分析参数取值调整可能带来的影响。
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签