Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

PostgreSQL Replication Solutions

2,407 views

Published on

Published in: Technology, Business
  • Be the first to comment

PostgreSQL Replication Solutions

  1. 1. PostgreSQL Replication Solutions BRUCE MOMJIAN, ENTERPRISEDB December, 2008 Abstract Replication is a complex feature. POSTGRESQL supports a variety of replication options. http://momjian.us/presentations
  2. 2. Uses for Replication Theolotech.com PostgreSQL Replication Solutions 1
  3. 3. 2 ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ¨©¨© §§ § ¦¦§ ¦¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ Fail Over ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ PostgreSQL Replication Solutions ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤
  4. 4. 3 ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ©¨ ©¨ §¦ §¦ §¦ §¦ ¨© ¨© §§§§ ¦ ¦ ¦ ¦ Load Balancing ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¡  ¡  ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ PostgreSQL Replication Solutions £¢ £¢ £¢ £¢  ¡  ¡ ££££¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤ ¢ ¢ ¢ ¢ ¡  ¡  £¢ £¢ £¢ £¢ ¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤ ¥¤  ¡  ¡ ££££¤¥¤¥¤¥¤¥¤¥¤¥¤¥¤ ¢ ¢ ¢ ¢
  5. 5. 4 ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ©©©©§§¦ §¦ §§§§¦ ¦ § ¦ ¨ ¨¨¨ ¦ ¦ ¦ ¦ Data Warehousing ¥¤ ¥¤ £¢ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¤¥¤¥ ££££¡¡  ¡  ¡¡¡¡    ¡   PostgreSQL Replication Solutions ¢ ¢¢¢         ¥¤ ¥¤ £¢ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¤¥¤¥ ££££¡¡  ¡  ¡¡¡¡    ¡   ¢ ¢¢¢        
  6. 6. ©¨ ©¨ ¡  ¡  ¡  ¡  5 ©¨ ©¨ ¡  ¡  ¡  ¡  ©¨ ©¨ ¡  ¡  ¡  ¡  ©¨ ©¨ ¡  ¡  ¡  ¡  ©¨ ©¨ ¡  ¡  ¡  ¡  Remote Servers £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ PostgreSQL Replication Solutions ¢£ ¢£¥¥¥¥¦§¦§¦§¦§ ¦§¦§¦§ ¤ ¤¤ ¤ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦
  7. 7. 6 Mobile Servers PostgreSQL Replication Solutions   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢   ¡  ¡  ¥¤ ¥¤ ¥¤ ¥¤ £¢ £¢ £¢ £¢ £¢ £¢ £¢ §§ ¡¨ ¦ §§ ¡¨ §§§§¥§¥§¥§¥§§§§§§¢£§§¢£§§¢£§§¢£§§¢£§§¢£§§¢£§¨ ¦ ¦ ¦ ¨ §¨ §¨ §¨ ¤§¨ ¤§¨ ¤§¨ ¤§¨ §¨ §¨ §¨ §¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦
  8. 8. Replication Solutions Taotaomona Computing PostgreSQL Replication Solutions 7
  9. 9. 8 Slave cannot execute queries No data loss on fail-over No overhead Shared Storage Network−Attached Storage (NAS) ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¨© ¨© ¨© § ¦ § § § § ¦ ¦ ¦ ¦ ¦ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ PostgreSQL Replication Solutions ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¢£ ¢£ ¢£ ¡   ¥ ¥ ¡ ¡ ¡ ¡ ¤ ¤           ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡    ¡  ¡  ¡  ¡  ¡ 
  10. 10. 9 Synchronous or asynchronous Possible data loss on fail-over Slave cannot execute queries when using asynchronous No overhead on master Storage Mirroring ©¨ ©¨ ©¨ §¦ §¦ §¦ §¦ §¦ ©¨ ©¨ ©¨ §¦ §¦ §¦ §¦ §¦ ¨© ¨© ¨© § ¦ § § § § ¦ ¦ ¦ ¦ ©¨ ©¨ ©¨ §¦ §¦ §¦ §¦ §¦ PostgreSQL Replication Solutions DRBD ¤¥ ¥ ¤ £ ¢ £ ¢ £ ¢ ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢ ¡  ¡  ¡  ¡  ¡  ¡ ¡ ¡ ¡ ¥ ¥         ¤ ¤ ¢£¢£ ¢£ ¡   ¥¤ ¥¤ £¢ £¢ £¢ ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡  ¡ 
  11. 11. 10 Allowing slaves to execute queries Synchronous and auto-fail-over Possible data loss on fail-over modes under development when using asychonous No overhead on master is under development Point-In-Time Recovery (PITR) ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¨© © ¨ © ¨ ¦ § ¦ § ¦ § ¦ § ¦ § ¦ § § § § ¨¨¨ § ¦ © © © ¦ ¦ ¦ ¦ ¦ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¦ §¦ §¦ §¦ §¦ §¦ Ahead (WAL) Write PostgreSQL Replication Solutions Log ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡  ¥ ¥ ¡ ¡ ¡ ¡ ¡   ¤ ¤ £ ¢ £ ¢ £ ¢           ¥¤ ¥¤ £¢ £¢ £¢   ¡  ¡  ¡  ¡  ¡ 
  12. 12. 11 Replication possible even over Possible data loss on fail-over Table-level granularity allows Triggers add overhead to the Slave can execute read-only complex data partitioning configurations slow links queries master Slony ¨ ©¨ ©¨ ¡  ¡  ¡  ¡  ¨ ©¨ ©¨ ¡  ¡  ¡  ¡  ¨ ¨© ¨© ¡¡¡¡         ¨ ©¨ ©¨ ¡  ¡  ¡  ¡  ¨ ¨©¨©¡¡¡¡      ¡  ¡  ¡  ¡  Asynchronous PostgreSQL Replication Solutions ¢ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ¢ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ¢ ¢£ ¢£ ¥¥¥¥§¦§¦§¦§¦§¦§¦§¦ ¤ ¤ ¤ ¤ ¢ £¢ £¢ ¥¤ ¥¤ ¥¤ ¥¤ §¦ §¦ §¦ §¦ §¦ §¦ §¦ ¢ ¢£ ¢£ ¥¥¥¥§¦§¦§¦§¦§¦§¦§¦ ¤ ¤ ¤ ¤
  13. 13. 12 Slony - Cascading Slaves 54 54 32 32 32 10 10 10 10 10 )( )( ' ' ' $ %$ %$ %$ %$ %$ 54 54 32 32 32 10 10 10 10 10 )( )( ' ' ' $ %$ %$ %$ %$ %$ @ 5 7@ 5 7@ 79 9 9 @ 7@ 7@ 7@ 1 7@ 1 71 97@ 1 7 777723@ 7723@ 7723@ 777777@77@ 1 9 0 94 94 9 9 9 9 90 90 0 90 8 ) 7) 67 6 6 678 78 7% 678 % 78 % 78 % 7 78787677'8 77'8 787'678777877778 % 6 $ 6( ( 6 6$ $ 6$ 6$ 6$ 54 54 32 32 32 10 10 10 10 10 )( )( ' ' ' $ %$ %$ %$ %$ %$ # # ! ! ! # # ! ! ! 7777777777777P I P # 7P # 7P 7P !7P !7P !7P 7P 7P 7P 7P 7P 7P 7 I I I I I I I I I I I I I # # ! ! ! ¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ C77 G7C 7C 7BG77H7H77H7H7H7 H7HC7HC7¨B77¨©H77¨©H7HC7¨©7HC777HC7777HC § BG ¦ 7 BG7 BG BG BG7C 7C 7§ BG7C § 7C § 7C § 7 BG BG BG ¦ ¦ BG ¦ BG ¦ BG ¦ ¨ ©¨ ©¨ ©¨ ¦ §¦ §¦ §¦ §¦ §¦ ¦ §¦ §¦ §¦ §¦ §¦ ¥¤ ¥¤ £¢ £¢ £¢ ¥¤ ¥¤ £¢ £¢ £¢ ¥ 7¥ 77£7£7£7777 7 7 A7 7 A A ¤ A ¤ A A ¢ A ¢ A ¢ A A A A A A ¥¤ ¥¤ £¢ £¢ £¢ ¡  ¡  ¡  ¡  F7F7F7DE77F 77F 7F7DE7F777F7777F DE ¡ 7¡ DE77D7D77DE7F 7F 7 DE7F 7F 7F 7 E    D77 E E 7D7D77D7D7D7 E E E E E ¡  ¡  PostgreSQL Replication Solutions
  14. 14. 13 Subscribers Other Subscriber ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ sl_log ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ modifications CREATE TRIGGER prevents Slony Internals % % % % % % % % # # # # # # # # $ $ $ $ $ $ $ $ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ % % % % % % % % # # # # # # # # $ $ $ $ $ $ $ $ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ % % % % % % % % # # # # # # # # $ $ $ $ $ $ $ $ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ User © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ © © © © © © © © § § § § § § § § ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ Slonik fills sl_log TRIGGER CREATE ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             sl_log ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             Origin ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             CREATE ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             TABLE PostgreSQL Replication Solutions ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ... ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡                             ! ! ! ! ! ! ! ! ' ' ' ' ' ' ' ' £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ! ! ! ! ! ! ! ! ' ' ' ' ' ' ' ' £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ User £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ £ £ £ £ £ £ £ £ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢
  15. 15. 14 Subscriber sl_log @ @ @ @ @ @ @ @ @A @A @A @A @A @A @A @A % % % % % % % % 9 9 9 9 9 9 9 9 $ $ $ $ $ $ $ $ 8 8 8 8 8 8 8 8 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 A A A A A A A A % % % % % % % % 9 9 9 9 9 9 9 9 $ $ $ $ $ $ $ $ 8 8 8 8 8 8 8 8 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 User © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 © © © © © © © © ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨                 Slony Multi-Slave Subscriber sl_log ' ' ' ' ' ' ' ' 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 # # # # # # # # ! ! ! ! ! ! ! ! ' ' ' ' ' ' ' ' 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 0 0 0 0 0 0 0 0 2 2 2 2 2 2 2 2 # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! User # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! # # # # # # # # ! ! ! ! ! ! ! ! PostgreSQL Replication Solutions sl_log Origin ) ) ) ) ) ) ) ) 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 ( ( ( ( ( ( ( ( 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ) ) ) ) ) ) ) ) 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 ( ( ( ( ( ( ( ( 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ) ) ) ) ) ) ) ) 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 ( ( ( ( ( ( ( ( 4 4 4 4 4 4 4 4 6 6 6 6 6 6 6 6 User £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ £ £ £ £ £ £ £ £ ¥ ¥ ¥ ¥ ¥ ¥ ¥ ¥ § § § § § § § § ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¢ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¤ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦

×