单实例单向rac搭建gg流

1

m1 m2 m3  source

 

2

m1 m2 m3 

 

/etc/hosts

172.16.10.140     source

 

source

添加

#public network

172.16.15.101 m1

172.16.15.102 m2

172.16.15.103 m3

 

#private network

10.11.11.1 m1-pri

10.11.11.2 m2-pri

10.11.11.3 m3-pri

29

#VIP network

172.16.15.104 m1-vip

172.16.15.105 m2-vip

172.16.15.106 m3-vip

 

#GGVIP

172.16.15.107 qr01-vip

 

#racscan network

172.16.15.100 rac-scan

 

3

 

[root@m2 ~]# cd /u01/app/11.2.3/grid/bin/

[root@m2 bin]# ./crsctl stat res -p | grep -ie .network -ie subnet | grep -ie name -ie subnet

NAME=ora.net1.network

USR_ORA_SUBNET=172.16.14.0

[root@m2 bin]# ./appvipcfg create -network=1 -ip=172.16.15.104 -vipname=gg_vip_trg -user=root

./crsctl setperm resource gg_vip_trg -u user:oracle:r-x

 

切换到oracle用户

[root@m2 bin]# su - oracle

[oracle@m2 ~]$ cd /u01/app/11.2.3/grid/bin/

[oracle@m2 bin]$ ./crsctl start resource gg_vip_trg

CRS-2672: Attempting to start 'gg_vip_trg' on 'm2'

CRS-5017: The resource action "gg_vip_trg start" encountered the following error: 

CRS-5005: IP Address: 172.16.15.104 is already in use in the network 留意一下 vip 会不会由此信息提示

. For details refer to "(:CLSN00107:)" in "/u01/app/11.2.3/grid/log/m2/agent/crsd/orarootagent_root/orarootagent_root.log".

CRS-2674: Start of 'gg_vip_trg' on 'm2' failed

CRS-2679: Attempting to clean 'gg_vip_trg' on 'm2'

CRS-2681: Clean of 'gg_vip_trg' on 'm2' succeeded

CRS-2563: Attempt to start resource 'gg_vip_trg' on 'm2' has failed. Will re-retry on 'm3' now.

CRS-2672: Attempting to start 'gg_vip_trg' on 'm3'

CRS-2676: Start of 'gg_vip_trg' on 'm3' succeeded

这里定义一个试试 

要么就是 VIP是自己设定的一个地址

要么就是 VIP是原来主机名字的虚拟VIP----这里我安装的是虚拟VIP试试看不行就换

不用VIP自己设置一个IP地址也可以只要是同一个网段的。

 


 

 

            单实例到RAC单向

前提条件:

1、源库:单实例安装了11.2.3数据库 有Grid、 Oracle 用户

2、目标库:安装了RACscan能连接通。

 

目标RAC

oracle用户

vim .bash_profile

export OGG_HOME=$ORACLE_BASE/ogg

export LD_LIBRARY_PATH=$ORACLE_HOME/lib

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

 

vim  /etc/hosts

添加源库的IP地址 

172.16.10.140 sdb

源:

vim /etc/hosts

添加 RAC节点下/etc/hosts下的所有内容。

就是主机名 VIP 

 

oracle用户

vim .bash_profile

export  OGG_HOME=$ORACLE_BASE/ogg

exportLD_LIBRARY_PATH=$ORACLE_HOME/lib

添加虚拟VIP分别在RAC 源上

172.16.15.105 qr01-vip

 

RAC节点:

root用户 

cd /u01/app/11.2.3/grid/bin/

./crsctl stat res -p | grep -ie .network -ie subnet | grep -ie name -ie subnet

./appvipcfg create -network=1 -ip=172.16.15.107 -vipname=gg_vip_trg -user=root

 

./crsctl setperm resource gg_vip_trg -u user:oracle:r-x

 

oracle用户:

cd /u01/app/11.2.3/grid/bin

./crsctl start resource gg_vip_trg

./crsctl status resource gg_vip_trg

 

源上:

[oracle@host01 ogg]$ ping qr01-vip 

 

rac上:

 

tnsping mes 

 

为安装GG做准备。

 

源:

sqlplus / as sysdba

SELECT log_mode, force_logging, supplemental_log_data_min FROM v$database;

CREATE USER oggadm1 IDENTIFIED BY pswd1a;

GRANT dba TO oggadm1;

exec

DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('OGGADM1','capture',TRUE);

 

RAC上:

select log_mode,force_logging,supplemental_log_data_min from v$database;

NO NO

接着

 

crs_stop ora.mes.db  关闭数据库。

 

节点一 只是需要在一个节点做就可以了

sqlplus / as sysdba

startup mount 

alter database archivelog;

alter database open;

alter system set log_archive_dest_state_1='location=/home/oracle/arch' scope=spfile;

alter system set log_archive_dest_1 ='location=+DATA/ARC1' scope=spfile sid='orcl1';

alter system set log_archive_dest_1 ='location=+DATA/ARC2' scope=spfile sid='orcl2';

show parameter db_recovery

 

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

ALTER DATABASE FORCE LOGGING;

ALTER SYSTEM SWITCH LOGFILE;

select log_mode,force_logging,supplemental_log_data_min from v$database;

commit;

shutdown immediate 

 

源上:

对照上面的做,一个一个来包括源数据库也是一样的。

 

节点一 源上 startup

show parameter name

 

RAC上:

CREATE USER oggadm2 IDENTIFIED BY pswd2a;

exec

DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE ('OGGADM2','capture',TRUE);

 

 

 

-----------------------------从下面开始我准备创建ACFS集群文件系统来代替DBFS步骤

sqlplus / as sysasm

五:创建卷并格式化成acfs集群文件系统并挂载

SQL> alter diskgroup data add volume acfsvol size 1G; 

Diskgroup altered. 

 

[root@rac1 ~]# mkdir /sharedisk 

[root@rac2 ~]# mkdir /sharedisk 

[root@rac1 ~]# /sbin/mkfs -t acfs -n ACFSVOL1 /dev/asm/acfsvol-53  

mkfs.acfs: version                   = 11.2.0.3.0 

mkfs.acfs: on-disk version           = 39.0 

mkfs.acfs: volume                    = /dev/asm/acfsvol-53 

10 mkfs.acfs: volume size               = 1073741824 

11 mkfs.acfs: Format complete. 

12  

13 [root@rac1 ~]# /sbin/acfsutil registry -a -f /dev/asm/acfsvol-53 /sharedisk/ 

14 acfsutil registry: mount point /sharedisk successfully added to Oracle Registry 

15  

16 [root@rac1 ~]# mount.acfs -o all 

17 [root@rac1 ~]# df -h 

18 Filesystem            Size  Used Avail Use% Mounted on 

19 /dev/mapper/VolGroup00-LogVol00 

20                        93G   19G   70G  21% / 

21 /dev/sda1             190M   17M  165M   9% /boot 

22 tmpfs                 2.0G  1.2G  807M  60% /dev/shm 

23 /dev/asm/acfsvol-53   1.0G   39M  986M   4% /sharedisk 

24  

25 [root@rac2 ~]# mount.acfs -o all 

26 [root@rac2 ~]# df -h 

27 Filesystem            Size  Used Avail Use% Mounted on 

28 /dev/mapper/VolGroup00-LogVol00 

29                        93G   12G   77G  14% / 

30 /dev/sda1              99M   17M   78M  18% /boot 

31 tmpfs                 2.0G  1.2G  807M  60% /dev/shm 

32 /dev/asm/acfsvol-53   1.0G   73M  952M   8% /sharedisk 

33  

34 [root@rac1 ~]# /sbin/acfsutil info fs  

35 /sharedisk 

36     ACFS Version: 11.2.0.3.0 

37     flags:        MountPoint,Available 

38     mount time:   Wed Feb 20 12:11:52 2013 

39     volumes:      1 

40     total size:   1073741824 

41     total free:   998002688 

42     primary volume: /dev/asm/acfsvol-53 

43         label:                 ACFSVOL1 

44         flags:                 Primary,Available,ADVM 

45         on-disk version:       39.0 

46         allocation unit:       4096 

47         major, minor:          252, 27137 

48         size:                  1073741824 

49         free:                  998002688 

50         ADVM diskgroup         DATA 

51         ADVM resize increment: 33554432 

52         ADVM redundancy:       unprotected 

53         ADVM stripe columns:   4 

54         ADVM stripe width:     131072 

55     number of snapshots:  0 

56     snapshot space usage: 0 

57     replication status: DISABLED 

 

[root@m1 mnt]# chown oracle.oinstall /acfs/ -R

RAC节点:

[oracle@m1 ~]$ echo $OGG_HOME

/u01/oracle/ogg

[oracle@m1 ~]$ cd $ORACLE_HOME

[oracle@m1 db]$ pwd

/u01/oracle/11.2.3/db

[oracle@m1 db]$ cd $ORACLE_BASE

[oracle@m1 oracle]$ pwd

/u01/oracle

[oracle@m1 oracle]$ mkdir ogg

[oracle@m1 oracle]$ cd $OGG_HOME

[oracle@m1 ogg]$ pwd

/u01/oracle/ogg

[oracle@m1 ogg]$  使用ftp上传数据到这上面 ogg112101_fbo_ggs_Linux_x64_ora11g_64bit

unzip ogg112101_fbo_ggs_Linux_x64_ora11g_64bit

 tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar 

 

源上同样建立ogg目录。

 

RAC上:

 

cd $OGG_HOME

cp  ./dirprm/jagent.prm jagent.backup 

rm -rf dirprm 

 

mkdir /acfs/acfs_sm/ogg -p

mkdir /acfs/acfs_sm/ogg/dirprm

mkdir /acfs/acfs_sm/ogg/dirpcs

mkdir /acfs/acfs_sm/ogg/dirchk

 

mkdir /acfs/acfs_big/ogg -p 

mkdir /acfs/acfs_big/ogg/dirdat

ln -s  /acfs/acfs_sm/ogg/dirprm $OGG_HOME/dirprm

ln -s  /acfs/acfs_sm/ogg/dirpcs $OGG_HOME/dirpcs

ln -s  /acfs/acfs_sm/ogg/dirchk $OGG_HOME/dirchk

 

./ggsci

create subdirs

GGSCI (m1) 2> exit

[oracle@m1 ogg]$ mv jagent.prm.bak /acfs/acfs_sm/ogg/dirprm/jagent.prm

[oracle@m1 ogg]$ cd dirprm/

[oracle@m1 dirprm]$ ll

total 4

-rwxr-x--- 1 oracle oinstall 53 Dec 12 14:23 jagent.prm

[oracle@m1 dirprm]$ pwd

/u01/oracle/ogg/dirprm

 

其他节点上:

 

cd $OGG_HOME

cp  ./dirprm/jagent.prm jagent.backup 

rm -rf dirprm 

 

ln -s  /acfs/acfs_sm/ogg/dirprm $OGG_HOME/dirprm

ln -s  /acfs/acfs_sm/ogg/dirpcs $OGG_HOME/dirpcs

ln -s  /acfs/acfs_sm/ogg/dirchk $OGG_HOME/dirchk

 

 

 

./ggsci

create subdirs

GGSCI (m1) 2> exit

[oracle@m1 ogg]$ mv jagent.prm.bak /acfs/acfs_sm/ogg/dirprm/jagent.prm

[oracle@m1 ogg]$ cd dirprm/

[oracle@m1 dirprm]$ ll

total 4

-rwxr-x--- 1 oracle oinstall 53 Dec 12 14:23 jagent.prm

[oracle@m1 dirprm]$ pwd

/u01/oracle/ogg/dirprm

 

一定要按照上面的步骤来。

源上:

cd $OGG_HOME

vim startup.oby 

 

DBLogin UserID oggadm1@sdb, Password pswd1a

Start Mgr

Info Mgr

Info CheckpointTable 

exit每次退出去之后,就需要dblogin)

 

vim GLOBALS (大写)不要写成小写

CheckpointTable oggadm1.oggchkpt

 

./gggsci

create subdirs

 

edit param mgr

Port 15001

PurgeOldExtracts ./dirdat/*, UseCheckpoints

 

Obey startup.oby

 

RAC节点上:

cd $OGG_HOME

 

vim startup.oby

 

DBLogin UserID oggadm2@mes, Password pswd2a

Start Mgr

Info Mgr

Info CheckpointTable

 

vim GLOBALS

CheckpointTable oggadm2.oggchkpt

/ggsci

 

edit param mgr

Port 15002

Autostart ER *

AutoRestart ER *

PurgeOldExtracts ./dirdat/*, UseCheckpoints

 

obey startup.oby

exit

 

其他节点上:

 

vim startup.oby

 

DBLogin UserID oggadm2@mes, Password pswd2a

Start Mgr

Info Mgr

Info CheckpointTable

 

vim GLOBALS

CheckpointTable oggadm2.oggchkpt

 

添加数据测试:

 

源上:

GGSCI (sdb) 10> Add TranData hr.regions

 

Logging of supplemental redo data enabled for table HR.REGIONS.

Info TranData hr.*

 

源上:

 

edit param eregab

 

Extract eregab             

ExtTrail ./dirdat/aa            

UserID oggadm1@sdb, Password pswd1a                        

Table hr.regions;

 

edit param pregab

Extract pregab

RmtHost qr01-vip, MgrPort 15002, Compress   

RmtTrail /acfs/acfs_big/ogg/dirdat/ab                     

Passthru                                                      

Table hr.regions;

 

Add Extract eregab, TranLog, Begin Now

Add ExtTrail ./dirdat/aa, Extract eregab, Megabytes 2

 

Add Extract pregab, ExtTrailSource ./dirdat/aa

 

Add RmtTrail /acfs/acfs_big/ogg/dirdat/ab,Extract pregab, Megabytes 2

 

节点一上:

 

 

edit param rregab

Replicat rregab

UserID oggadm2@mes, password pswd2a   

AssumeTargetDefs                                           

DiscardFile dirrpt/rsalesab.dsc, Append                    

Map hr.*, Target hr.*; 

 

Add Replicat rregab,ExtTrail /acfs/acfs_big/ogg/dirdat/ab

Add CheckpointTable

 

start *

info all 

源上:

cd $OGG_HOME

./ggsci 

obey startup.oby

Add CheckpointTable

info all

start *

exit

 

源:

alter user hr identified by hr account unlock;

SQL> insert into regions values(10,'Polar');

SQL> insert into regions values(11,'Oceans');

SQL> commit;

 

 

RAC

hr用户
SELECT * FROM regions;

ll /acfs/acfs_big/ogg/dirdat/

ll /acfs/acfs_sm/ogg/dirchk/

total 8

-rw-rw-r-- 1 oracle oinstall 4096 Dec 12 17:24 RREGAB.cpr

-rw-rw-r-- 1 oracle oinstall   24 Dec 12 17:24 RREGAB.cps

 

 

 

 

 

假如源上 ogg坏了 怎么办?

 

ggsicstop * 

stop mgr

rm -rf  $ORACLE_BASE/ogg

上传文件 解压缩 

 

 

----------------上面所有步骤配置出来的只是 DML操作

 下面 DDL操作。。。。。。。。。。。。。

总结一下 : GGVIP都可以不要。为什么呢,可以填写m1 IPVIP地址。除此之外,其他都不行,包括172.16.15.107

 

 

源上:

[root@sdb ~]# su - oracle

[oracle@sdb ~]$ cd /u01/oracle/ogg/

[oracle@sdb ogg]$ cat startup.oby 

DBLogin UserID oggadm1@sdb, Password pswd1a

Start Mgr

Info Mgr

Info CheckpointTable

[oracle@sdb ogg]$ sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.3.0 Production on Sun Dec 15 21:15:46 2013

 

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production

With the Partitioning, Oracle Label Security, OLAP, Data Mining,

Oracle Database Vault and Real Application Testing options

 

SQL> grant execute on utl_file to oggadm1

 

GGSCI (sdb) 7> view params ./GLOBALS

 

CheckpointTable oggadm1.oggchkpt

 

 

GGSCI (sdb) 8> edit param ./GLOBALS

CheckpointTable oggadm1.oggchkpt

ggschema oggadm1

ogg目录下

SQL> sho user

USER is "SYS"

SQL> @marker_setup.sql

 

SQL> alter system set recyclebin=off DEFERRED;

 

System altered.

 

SQL> shutdown immediate

QL> startup

SQL> show parameter recyclebin;

 

NAME      TYPE  VALUE

------------------------------------ ----------- ------------------------------

recyclebin

     string  OFF

 

@ddl_setup.sql 

@role_setup.sql

grant ggs_ggsuser_role to oggadm1;

@ddl_enable.sql

@?/rdbms/admin/dbmspool.sql

[root@sdb ~]# find / -name dbmspool.sql

/u01/app/grid/11.2.3/rdbms/admin/dbmspool.sql

/u01/oracle/11.2.3/rdbms/admin/dbmspool.sql

[root@sdb ~]# 

SQL> @/u01/oracle/11.2.3/rdbms/admin/dbmspool.sql

@ddl_pin.sql oggadm1

 

edit param eregab

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8) 

ddl include all

 

edit param pregab

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8) 

 

RAC上:

 

edit param rregab

setenv (NLS_LANG=AMERICAN_AMERICA.AL32UTF8)

ddl include all

ddlerror default ignore retryop maxretries 3 retrydelay 5

HANDLECOLLISIONS





本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/261932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python自动登录教程_Python 实现自动登录+点击+滑动验证功能

需要用到的库有selenium,还需要安装Chrome浏览器驱动,具体如何安装我就不详述了 在这里我模拟了csdn的登录过程 ** 1**.首先打开网页,用户名密码登录,然后定位用户名输入框,和密码输入框,输入后 点击登陆 弹…

2月份.xyz域名总量10强:西数称王 注册量破百万

IDC评述网(idcps.com)02月25日报道:根据ntldstats.com发布的最新数据显示,截止至2016年2月24日17时,国内外.xyz域名总量十强名单顺序,与上期1月28日对比,无任何变化。最值得一提的是&#xff0c…

flash作业_一起作业,你很智障!

电子作业现在貌似很流行,在很多学校都有,具体的利弊就不再赘述,可以点击前面的超链接跳转到某度百科自己看。今天只是忍不住怕盘点下国内知名电子作业平台——一起作业网的一些智障设计。。。本来想写到这里去的:有哪些让人拍案叫…

QtCreator添加图片资源

在qt creator里面,设计师designer是一个很好用的功能,通过它我们可以可视化的设计界面。当然了,设计界面就需要各种各样的效果,图片资源是不可少的。今天,小编就来教大家qt怎么添加图片资源 工具/原料 qt creator方法/…

只安装python_AI帮你写Python,安装只需5步,还能任你调教 | 开源

一行一行地敲代码就像是徒手搬砖,聪明的程序猿们表示:我们要解放生产力! 比如像这样:在机器学习的时代,AI智能补全代码早已不是梦想,各种IDE和插件都在努力帮助程序猿减少击键次数,延长键盘寿命…

巧用apply让javascript函数仅执行一次

RT,有时候我们只想要让某些脚步函数执行一次就算完成任务了。如何实现这种功能呢?简单模仿下面这段就可以轻松搞定了: 代码 varobj newObject();obj.triggerOnce function(fn) { //控制让函数只触发一次returnfunction() { try{ fn.ap…

评论时间戳格式化

如图: 注意,评论时间戳的格式,刚才,几小时之前,几天之前..... 实现需要一个时间格式的工具类,如果用java.util.Date当然也可以实现,这里说的是更方便的joda-time。 maven地址:http:/…

android lint工作机制,Android架构

MVCmvc model view controller 模式视图控制器M: 业务逻辑处理V:处理数据显示的部分C:Activity处理用户交互的问题,中间桥梁的作用,解耦的作用。特点:耦合性低扩展性好,利于维护模块职责划分明确Model层&am…

opendds开发指南中文版_最强的开发者技术路线图已经更新到 2020 GitHub 超 118k还有中文...

想必大家都知道,学习路线图是学习一门新技术的入门指南,让我们对技术有一个大概的了解,并且在学习感到困惑时被指导。所谓不求最好,但求最全。今天在在就给大家带来了一个国外大牛开源的项目 — 「developer-roadmap」&#xff0c…

iOS APP网络分析之rvictl(可以捕捉除了Wifi以外的网络类型)

iOS应用(包括移动应用)的网络分析,一般采用将移动设备上的流量导入到PC机上,利用PC上成熟的数据包分析工具例如wireshark等来进行分析的方法。 总的来说,有以下三种方法:一、在PC上设置网络共享&#xff0c…

oracle批量update数据_东方国信大数据面试真题

东方国信学长1Hadoop工程师笔试题(金融事业部)1)技术基础题(共十题,每题5分)(1)列举在Linux系统下可以在看系统各项性能的工具(区分CPU、内存、硬盘、网络等)…

eclipse定制化配置调优、初始化配置指南、可以解决启动慢等问题

配置eclipse的jvm参数 打开eclipse根目录下的eclipse.ini在最后面加上如下的jvm参数 -Xms400m -Xmx1400m -XX:NewSize128m -XX:MaxNewSize512m -XX:PermSize96m -XX:MaxPermSize128m -server -XX:CompileThreshold100 -XX:UseParNewGC -XX:UseConcMarkSweepGC -XX:CMSInitiatin…

SEC SOC Test Board 在WIN 7下的安装

首先找到“设备和打印机”点击打开 如果你插上了USB线,会看到,安装不成功时会有个“!” 双击它,出现 点击“属性”,出现 点击“改变设置”,出现 点击“更新驱动程序”,出现 点击进去&#xff0c…

吴枫 python小课怎么样_编程中,有哪些好的习惯从一开始就值得坚持?

电影《喜剧之王》里,周星驰饰演的尹天仇,是一个渴望成为真正的演员,却不断沦为落魄跑龙套的小人物。即便如此,他对演戏的态度始终认真而可敬。他每天不但锲而不舍寻找演戏机会,还在街坊福利社开了个戏剧训练班&#xf…

设置width不生效_关于padding被计算在width中问题——box-sizing相关

前一阵子遇到一个小问题,在同样的样式(主要是宽高边距之类的)条件下,DIV在移动端和PC端的宽度不一样,排除了绝大多数样式的问题,但是有个比较陌生,就是box-sizing,其实经常看到&…

我的Python成长之路---第六天---Python基础(19)---2016年2月20日(晴)

shelve模块shelve模块是pickle模块的扩展,可以通过key,value的方式访问pickle持久化保存的数据持久化保存:12345678910111213import shelvesw shelve.open(shelve_test.pkl) # 创建shelve对象name [13, 14, 145, 6] # 创建一个列表dist_tes…

apache 设置404 页面_SpringBoot自定义错误页面

SpringBoot请求错误如404可能看到如下页面:有时可能需要自定义错误页面针对不同的http.status,如404/400。【1】解决方法① 注册错误页面如下所示:Componentpublic class ErrorPageConfig implements ErrorPageRegistrar { Override public void r…

Java 编程:如何提高性能?(简单总结篇)

2019独角兽企业重金招聘Python工程师标准>>> 开发者在编程中除了要有编程规范,还要注意性能,在 Java 编程中有什么提高性能的好办法呢? 本文转自国内 ITOM 行业领军企业 OneAPM Cloud Insight(一款能够优雅监控多种操作…

mysql没有开启binlog能恢复数据吗_神了!一个妹子 rm -rf 把公司整个数据库删没了......

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。01事故背景安排一个妹子在一台生产服务器上安装 Oracle&…

android手机活跃度,微信Android机型活跃度曝光,这个结果你满意吗?

原标题:微信Android机型活跃度曝光,这个结果你满意吗?在本周的第二届前端开发者大会上,由腾讯微信工程师公布了微信Android客户端机型前十的发布图,说的也是某款手机的存量跟用户活跃度的统计,在这张微信分…